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 ErrorExceptionAusnahmeobjekt 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 $errorArray 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.