Ein Phänomen welches leider häufiger auftaucht ist das sämtliche Exception gefangen werden und dann als eine bestimmte Exception weiter geschmissen werden. Dadurch geht leider die ursprüngliche Ursache der Exception verloren, was zu großen Verwirrungen führen kann.
class user {
public function save() {
$mail->send();
...
}
}
try{
$user = new User();
$user->setName();
$user->save();
} catch (Exception e) {
throw new UserNotSavedException();
}Wenn hier jetzt die Mail nicht verschickt werden kann, weil z.B der Mailserver nicht da ist, dann wird trotzdem die UserNotSavedException geschmissen. Dies ist erstens nicht richtig und kann zweitens vor allem wenn es komplexer wird zu sehr verwirrenden Aussagen führen, die ein langes Debuggen erfordern können. Besser wäre es die Exception z.B. so zu behandeln:
try{
$user = new User();
$user->setName();
$user->save();
} catch (UserNotSavedException e) {
echo $e->getMessage();
} catch(MailExeception)){
echo $e->getMessage();
}So ist immer klar was schief gelaufen ist und man kann entsprechend reagieren.


0 Antworten über Exceptions Fangen und Werfen - Teil 2
Bisher gibt es keine Kommentare.