PHP hvata greške na nivou FATAL

Službena referenca

Službena web stranica set_error_handler register_shutdown_function

Kako savršeno uhvatiti sve greške

set_error_handler može se koristiti za hvatanje većine vrsta greš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. U ovom trenutku 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 greška u procesu. Dakle, u ovom povratnom pozivu također trebamo utvrditi je li došlo do greške, a ako se pogreška dogodila, zabilježit ćemo je u dnevnik. Za detalje pogledajte sljedeći kod.

            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);
}