In Perl ist es übrigens möglich, beliebig viele Exceptions zu werfen ohne darauf reagieren zu müssen. Nämlich dann wenn jede einzelne Exception mit eval aufgefangen wird:
# Klassisch mit eval
eval{ die 123 }; # lost
eval{ $m->throw('ExA', 'Ex A: Invalid', 1) };
eval{ $m->throw('ExB', 'Ex B: Ungültig') };
eval{ die 234 }; # always overwrites $@
Wenn es mehrere eval{}-Blöcke gibt in denen Exceptions aufgetreten sind, wäre auf die herkömmliche Art und Weise $@ überschrieben worden. Erst eine Klassifizierung hebt diesen Nachteil auf. Mit meiner Entwicklung ist es möglich, sämtliche derart aufgefangene Exceptions wiederzufinden.
Ansonsten kann es auch in Perl in einem eval{} oder try{} Block nur eine Exception geben, die zwar aufgefangen wird, jedoch werden alle danach innerhalb desselben Blocks notierten Anweisungen nicht mehr ausgeführt.
So macht bspw. ein INSERT-Statement ja auch keinen Sinn wenn die Verbindung weggebrochen ist.
MfG