PHP menangkap kesalahan level FATAL

Referensi resmi

Situs resmi set_error_handler register_shutdown_function

Bagaimana menangkap semua kesalahan dengan sempurna

set_error_handler dapat digunakan untuk menangkap sebagian besar jenis kesalahan Ketika kesalahan tingkat FATAL ditemukan, karena PHP langsung menghentikan operasi, fungsi panggilan balik yang ditetapkan oleh set_error_handler tidak dapat dipicu. Saat ini, kita perlu menggunakan register_shutdown_function untuk mengatur fungsi callback untuk penghentian program. Perlu dicatat bahwa callback yang disetel oleh register_shutdown_function dijalankan setelah program dihentikan, terlepas dari apakah ada kesalahan dalam prosesnya. Jadi dalam callback ini, kita juga perlu menentukan apakah telah terjadi kesalahan, dan jika telah terjadi kesalahan, kita akan mencatatnya di log. Untuk detailnya, silakan lihat kode 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);
}