Tach!
<?php
function errHandle($errNo, $errStr, $errFile, $errLine) {
$msg = "$errStr in $errFile on line $errLine";
if ($errNo == E_NOTICE || $errNo == E_WARNING) {
throw new ErrorException($msg, $errNo);
} else {
echo $msg;
}
}
set_error_handler('errHandle');
Da man die Funktion errHandle in aller Regel für nichts anderes als das Übergeben an die Funktion set\_error\_handler() verwendet, kann man sie gleich als anonyme Funktion notieren. Das sähe dann so aus:
set\_error\_handler(function ($errNo, $errStr, $errFile, $errLine) {
...
});
Weiterhin würde ich für den angestrebten Fall des OP wohl keine Exception werfen, sondern gleich abbrechen.
Allerdings könnte man dieses Konstrukt auch als Übersetzer von herkömmlichen Meldungen in Exceptions verwenden. Dagegen spricht allerdings, dass die Eigenschaften file und line nicht gesetzt werden können. Sie enthalten immer die Daten der throw-Zeile, und sind damit nicht sinnvoll gefüllt. Das stellt nicht unbedingt ein Problem dar, wenn es nur darum geht, sie mit try-catch fangen zu können.
dedlfix.