PHP kaptas FATAL-nivelajn erarojn

Oficiala referenco

Oficiala retejo set_error_handler register_shutdown_function

Kiel kapti ĉiujn erarojn perfekte

set_error_handler povas esti uzata por kapti plej multajn erarajn tipojn. Kiam FATAL-nivela eraro troviĝas, ĉar PHP rekte ĉesigas la operacion, la revoka funkcio starigita de set_error_handler ne povas esti ekigita. Nuntempe ni bezonas uzi register_shutdown_function por agordi la revokan funkcion por finado de programo. Notindas, ke la revokado agordita de register_shutdown_function estas ekzekutita post la fino de la programo, sendepende de ĉu estas eraro en la procezo. Do en ĉi tiu revoko, ni ankaŭ bezonas determini ĉu eraro okazis, kaj se eraro okazis, ni registros ĝin en la protokolo. Por detaloj, bonvolu raporti al la sekva kodo.

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