Rumah >pembangunan bahagian belakang >masalah PHP >php mengabaikan kod buruk
PHP ialah bahasa pengaturcaraan web yang sangat popular, kuasanya bukan sahaja ditunjukkan dalam fleksibiliti dan kemudahan penggunaannya, tetapi juga dalam mekanisme pengendalian ralatnya. Apabila ralat berlaku dalam kod PHP, skrip PHP akan membuang mesej ralat secara lalai dan berhenti berjalan, tetapi kadangkala kita perlu mengabaikan ralat ini dan membiarkan skrip terus berjalan. Jadi, bagaimana anda mengabaikan ralat dalam PHP? Artikel ini akan memperkenalkannya kepada anda secara terperinci.
1. Tahap ralat
Dalam PHP, ralat dibahagikan kepada tahap yang berbeza, seperti ralat maut, ralat serius, amaran, dsb. Tahap ralat yang berbeza akan dikendalikan secara berbeza pada masa jalanan Ralat maut secara langsung akan menghentikan skrip daripada berjalan, manakala ralat dan amaran yang serius akan membuang mesej ralat tetapi tidak akan menghentikan skrip daripada berjalan. Pemalar ralat yang berbeza ditakrifkan dalam PHP, yang sepadan dengan tahap ralat yang berbeza. Berikut ialah pemalar ralat PHP biasa dan tahap ralat sepadannya:
2 sebagai fungsi log ralat error_log(), fungsi pengecualian buang throw(), fungsi maklumat ralat paparan error_reporting(), dsb. Sudah tentu, kami juga boleh menyesuaikan fungsi pengendalian ralat. Berikut adalah pengenalan ringkas kepada penggunaan fungsi ini.
(1) error_log()
Fungsi error_log() digunakan untuk merekod maklumat ralat ke fail log ralat pelayan, seperti fail error_log Apache. Fungsi ini mempunyai tiga parameter:
bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )
$message ialah mesej ralat, $message_type ialah tahap ralat (lalai ialah 0, yang diabaikan), $destination ialah laluan fail log ralat dan $extra_headers boleh tetapkan maklumat pengepala tambahan untuk e-mel.
(2) throw()
Fungsi throw() digunakan untuk membuang pengecualian, iaitu, untuk menghentikan program secara langsung daripada menjalankan dan mengeluarkan mesej ralat. Fungsi ini mempunyai satu parameter, yang merupakan contoh objek pengecualian.
(3) error_reporting()
Fungsi error_reporting() digunakan untuk menetapkan tahap pelaporan ralat Ia mempunyai satu parameter, iaitu pemalar ralat atau hasil operasi OR beberapa pemalar ralat.
Berikut ialah contoh mudah yang menunjukkan cara menggunakan fungsi error_reporting() untuk mengabaikan ralat tahap E_NOTICE:
error_reporting(E_ALL & ~E_NOTICE);
Dengan melakukan operasi bitwise DAN E_ALL dengan ~E_NOTICE, anda boleh mendapatkan keputusan kecuali E_NOTICE Semua peringkat ralat kecuali Selepas tetapan ini, skrip PHP akan mengabaikan ralat peringkat E_NOTICE.
(4) Fungsi pengendalian ralat tersuai
PHP membolehkan kami menyesuaikan fungsi pengendalian ralat, supaya kami boleh menyesuaikan laluan fail log ralat, kaedah output ralat, dsb. Kita perlu menggunakan fungsi set_error_handler untuk menetapkan fungsi pengendalian ralat Fungsi ini mempunyai satu parameter, iaitu nama fungsi pemprosesan tersuai.
Berikut ialah contoh mudah:
function custom_error_handler($errno, $errstr, $errfile, $errline) { error_log($errstr . "in" . $errfile . " on line " . $errline); return true; } set_error_handler("custom_error_handler");
Fungsi pengendalian ralat tersuai ini menulis maklumat ralat pada fail log ralat pelayan dan mengembalikan nilai sebenar, menunjukkan bahawa ralat telah dikendalikan .
3. Abaikan ralat
Sekarang mari lihat cara mengabaikan ralat dalam PHP. Kaedahnya sangat mudah, hanya gunakan simbol @ untuk mengabaikan ralat yang anda tidak mahu kendalikan. Contohnya:
$count = @file_get_contents("file.txt");
Pernyataan ini akan membaca kandungan fail "file.txt" dan menetapkannya kepada pembolehubah $count, tetapi jika ralat berlaku semasa membaca fail, seperti fail tidak wujud atau tidak mempunyai kebenaran untuk membaca, dsb. , kemudian menambahkan simbol @ boleh mengabaikan ralat dan membenarkan skrip untuk terus melaksanakan.
Perlu diambil perhatian bahawa menggunakan simbol @ untuk mengabaikan ralat akan menjadikan kod kurang selamat, kerana ia mungkin membawa kepada beberapa ralat yang sukar ditemui, seperti pembolehubah yang tidak dimulakan atau parameter fungsi yang salah, dsb. Oleh itu, anda hanya perlu menggunakan simbol @ jika anda pasti bahawa ralat tersebut boleh diabaikan.
4. Ringkasan
Dalam PHP, kaedah untuk mengabaikan ralat adalah sangat mudah, hanya gunakan simbol @. Tetapi menggunakan simbol @ mungkin menyebabkan beberapa ralat yang sukar ditemui, jadi kita harus cuba mengelak daripada menggunakannya. Jika anda ingin mengabaikan ralat, anda harus menggunakan fungsi set_error_handler() untuk menyesuaikan fungsi pengendalian ralat, atau gunakan fungsi error_reporting() untuk menetapkan tahap pelaporan ralat. Ini membolehkan kami mengendalikan ralat dalam program PHP dengan lebih fleksibel dan selamat.
Atas ialah kandungan terperinci php mengabaikan kod buruk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!