PHP fanger FATAL-nivåfeil
Offisiell referanse
Offesiell nettside set_error_handler register_shutdown_functionHvordan fange alle feil perfekt
set_error_handler kan brukes til å fange opp de fleste feiltyper. Når det oppstår en FATAL-nivåfeil, fordi PHP direkte avslutter operasjonen, kan ikke tilbakeringingsfunksjonen satt av set_error_handler utløses. På dette tidspunktet trenger vi å bruke register_avstengningsfunksjon for å stille inn tilbakeringingsfunksjonen for programavslutning. Det skal bemerkes at tilbakeringingen satt av register_shutdown_function utføres etter at programmet er avsluttet, uavhengig av om det er en feil i prosessen. Så i denne tilbakeringingen må vi også avgjøre om en feil har oppstått, og hvis en feil har oppstått, vil vi registrere den i loggen. For mer informasjon, se følgende kode.
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);
}