PHP: ErrorException

PHP: ErrorException

Exceptions sind eine feine Sache. Sie kommen jedem faulen Programmierer entgegen, der keine Lust hat, jeden möglichen Fehlerfall einzeln abzuhandeln. Dumm nur, dass PHP-Funktionen aufgrund von Rückwarts-Kompatibilität immer noch Fehler statt Exceptions werfen.

Einer eher bekanntere Methode ist, einen Errorhandler zu schreiben, der nur die Aufgabe hat, eine Exception zu werfen. Das Problem: Der Backtrace, den man ja mit $e->getTrace() erhält, beginnt dummerweise mit der Zeile, in der die Exception geworfen wurde, und nicht mit der ders eigentliche Fehlers. Deshalb kann man dummerweise nicht den gleichen Top-Level-Exception-Handler verwenden, den man für Standard-Exceptions verwendet.

Eher unbekannt ist, dass es in PHP schon eine erweitere Exception namens ErrorException gibt. Mit folgendem simplen Code ist es problemlos möglich, Fehler auf Exceptions zu mappen:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Wer das ganze jetzt ein wenig aufmöbeln will, kann in diesem error handler jetzt noch den error_reporting Level abfragen, damit nur Fehler Exceptions werfen, die das auch wirklich sollen.


  1. ErrorException im PHP Manual
  2. Exceptions im PHP Manual
  3. error_reporting() im PHP Manual

Verwandte Artikel: