PHP hvata pogreške na razini FATAL
Službena referenca
Službena stranica set_error_handler register_shutdown_functionKako savršeno uhvatiti sve pogreške
set_error_handler može se koristiti za hvatanje većine vrsta pogrešaka. Kada se naiđe na pogrešku na razini FATAL, jer PHP izravno završava operaciju, funkcija povratnog poziva postavljena set_error_handler ne može se aktivirati. Trenutno moramo koristiti funkciju register_shutdown_function da postavimo funkciju povratnog poziva za završetak programa. Treba napomenuti da se povratni poziv postavljen funkcijom register_shutdown_function izvršava nakon završetka programa, bez obzira na to postoji li pogreška u procesu. Dakle, u ovom povratnom pozivu također moramo utvrditi je li došlo do pogreške, a ako se pogreška dogodila, zabilježit ćemo je u zapisnik. Pojedinosti potražite u sljedećem kodu.
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);
}