Ich habe einige IF/THEN-Logik, die schwer zu lesen ist, und denke darüber, Ausnahmen zu verwenden.Unterscheidung zwischen verschiedenen PHP-Ausnahmen
Der Code wird die Benutzereingabe testen und Ausnahmen entsprechend auslösen. Meine catch-Anweisung behandelt die erwarteten Ausnahmen, aber wenn die Ausnahme nicht erwartet wird (wie ich eine PDO-Anweisung vermasselt habe), möchte ich die Ausnahme auslösen und das Fehlersystem von PHP damit umgehen lassen. Alle vorweggenommenen Ausnahmen werden auf die gleiche Weise behandelt, und ich möchte nicht mehrere Versuche/Fänge bei jedem Test verwenden.
Wie kann ich in der catch-Anweisung basierend auf der Ausnahme verschiedene Aktionen ausführen?
try {
$user_input=$_POST['user_input'];
// rest of code here...
if (test1($user_input)) {
throw new Exception("Anticipated exception 1.");
}
// rest of code here...
//Some PDO which might generate a non-anticipated exception
if (test2($user_input)) {
throw new Exception("Anticipated exception 2.");
}
// rest of code here...
}
catch (Exception $e) {
if(anticipatedException($e)) {
//Deal with it
}
else {
throw $e;
}
}
Könnten Sie nicht Gruppe Ihre besondere Ausnahmen einen gemeinsamen Vorfahren haben? – mario
@mario Ich verstehe es nicht. Bitte erläutern. – user1032531
Wie 'UserInputTooShortExc erweitert CommonInputExceptions' und' UserInputTooLong' usw. das gleiche tun; fange dann einfach den 'Common..Exc' an. – mario