Fehlerbehandlungsroutine festlegen und wiederherstellen
Eine Möglichkeit besteht darin, vor dem Aufruf einen eigenen Fehlerbehandler festzulegen und den vorherigen Fehlerbehandler später mit wiederherzustellen restore_error_handler()
.
set_error_handler(function() { /* ignore errors */ });
dns_get_record();
restore_error_handler();
Sie können auf dieser Idee aufbauen und einen wiederverwendbaren Fehlerbehandler schreiben, der die Fehler für Sie protokolliert.
set_error_handler([$logger, 'onSilencedError']);
dns_get_record();
restore_error_handler();
Fehler in Ausnahmen verwandeln
Sie können set_error_handler()
und die ErrorException
Klasse verwenden, um alle PHP-Fehler in Ausnahmen umzuwandeln.
set_error_handler(function($errno, $errstr, $errfile, $errline, $errcontext) {
// error was suppressed with the @-operator
if (0 === error_reporting()) {
return false;
}
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
try {
dns_get_record();
} catch (ErrorException $e) {
// ...
}
Wenn Sie Ihren eigenen Fehlerbehandler verwenden, ist es wichtig zu beachten, dass er die error_reporting
Einstellung umgeht und alle Fehler (Hinweise, Warnungen usw.) an Ihren Fehlerbehandler weiterleitet. Sie können ein zweites Argument set_error_handler()
festlegen, um zu definieren, welche Fehlertypen Sie empfangen möchten, oder über ... = error_reporting()
die Fehlerbehandlung auf die aktuelle Einstellung zugreifen .
Warnung unterdrücken
Eine andere Möglichkeit besteht darin, den Aufruf mit dem Operator @ zu unterdrücken und anschließend den Rückgabewert von zu überprüfen dns_get_record()
. Ich würde jedoch davon abraten, da Fehler / Warnungen ausgelöst werden, um behandelt und nicht unterdrückt zu werden.