PHP menangkap kesalahan tahap FATAL

Rujukan rasmi

Laman web rasmi set_error_handler register_shutdown_function

Cara mengatasi semua kesalahan dengan sempurna

set_error_handler dapat digunakan untuk menangkap sebagian besar jenis kesalahan. Ketika kesalahan tingkat FATAL dihadapi, karena PHP secara langsung menghentikan operasi, fungsi panggilan balik yang ditetapkan oleh set_error_handler tidak dapat dipicu. Pada masa ini, kita perlu menggunakan register_shutdown_function untuk menetapkan fungsi panggilan balik untuk penamatan program. Perlu diingatkan bahawa panggilan balik yang ditetapkan oleh register_shutdown_function dijalankan setelah program dihentikan, terlepas dari apakah ada kesalahan dalam prosesnya. Oleh itu, dalam panggilan balik ini, kita juga perlu menentukan sama ada ralat telah berlaku, dan jika ralat telah berlaku, kita akan merekodkannya dalam log. Untuk perincian, sila rujuk kod berikut.

            set_error_handler('exception_handler');
register_shutdown_function('shutdown_handler');
function exception_handler($err_no, $err_str, $err_file, $err_line)
{
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}
function shutdown_handler()
{
    $error = error_get_last();
    if (empty($error)) {
        return;
    }
    error_reporting(0);
    // save error log
    // ...
    error_reporting(E_ALL);
}