Zitat von phpMorpheus2
Beitrag anzeigen
PHP-Code:
function inverse($x) {
if ($x == 0) throw new InvalidArgumentException('Division durch Null!');
if ($x == 1) throw new DontWasteMyTimeException($x.' ist neutral bzgl. Multiplikation');
return 1/$x;
}
try {
echo '1/0 = ' . inverse(0);
} catch (InvalidArgumentException $e) {
echo $e->getMessage() . ' ' . $e->getArg();
} catch (DontWasteMyTimeException $e) {
echo 'Es ist ein Fehler aufgetreten: ' . $e->getMessage();
}
PHP-Code:
// Das Beispiel ist nicht ganz korrekt und auch nicht besonders sinnvoll.
function negative($x) {
if (abs($x) == 0) throw new DontWasteMyTimeException($x.' ist neutral bzgl. Addition');
return -1 * $x;
}
function negativeInverse($x) {
if (abs($x) == 0) throw new DontWasteMyTimeException($x.' ist neutral bzgl. Addition');
return -1 * inverse($x);
}
try {
echo '-(1/0) = ' . negative(inverse(0));
echo '-(1/0) = ' . negativeInverse(0);
} catch (InvalidArgumentException $e) {
echo $e->getMessage() . ' ' . $e->getArg();
} catch (DontWasteMyTimeException $e) {
echo 'Es ist ein Fehler aufgetreten: ' . $e->getMessage();
}
Exceptions sind ein Mittel der Sprache und dadurch viel mächtiger und eleganter als alles was du mit deinem $arr erreichen kannst.
Ich habe übrigens auch schon Applikationen gesehen, die bei der Formularvalidierung für jede fehlgeschlagene Prüfung eine Exception geworfen haben. Man kann die alle in einem Container sammeln und dann dem User die ganze Latte von Fehlermeldungen anzeigen. Aber dafür sind Exceptions nun auch wieder nicht gemacht. Sie unterbrechen den Programmfluss und das sollte, wie der Name schon sagt, nur in Ausnahmefällen passieren.
Kommentar