Wie aus dieser Antwort hervorgeht , können Sie register_shutdown_function()
einen Rückruf registrieren, der überprüft wird error_get_last()
.
Sie müssen weiterhin die Ausgabe verwalten, die aus dem fehlerhaften Code generiert wurde, sei es durch den @
( Shut-Up- ) Operator oderini_set('display_errors', false)
ini_set('display_errors', false);
error_reporting(-1);
set_error_handler(function($code, $string, $file, $line){
throw new ErrorException($string, null, $code, $file, $line);
});
register_shutdown_function(function(){
$error = error_get_last();
if(null !== $error)
{
echo 'Caught at shutdown';
}
});
try
{
while(true)
{
$data .= str_repeat('#', PHP_INT_MAX);
}
}
catch(\Exception $exception)
{
echo 'Caught in try/catch';
}
Beim Ausführen wird dies ausgegeben Caught at shutdown
. Leider wird das ErrorException
Ausnahmeobjekt nicht ausgelöst, da der schwerwiegende Fehler die Skriptbeendigung auslöst und anschließend nur in der Funktion zum Herunterfahren abgefangen wird.
Sie können das $error
Array in der Funktion zum Herunterfahren auf Details zur Ursache überprüfen und entsprechend reagieren. Ein Vorschlag könnte darin bestehen, die Anfrage erneut an Ihre Webanwendung zu senden ( an einer anderen Adresse oder natürlich mit anderen Parametern ) und die erfasste Antwort zurückzugeben.
Ich empfehle jedoch, einen error_reporting()
hohen Wert-1
( Wert von ) beizubehalten und ( wie andere vorgeschlagen haben ) die Fehlerbehandlung für alles andere mit set_error_handler()
und zu verwenden ErrorException
.