Verschachtelte Ausnahmen?

8

Funktioniert das?

%Vor%

Wenn nämlich die erste Zeile ein ValidationError wirft, fängt das zweite except es?

Ich hätte es unverschachtelt geschrieben, aber die zweite Filteranweisung kann auch fehlschlagen! Und ich möchte den gleichen ValidationError Block verwenden, um das auch zu fangen.

Ich würde es selbst testen, aber dieser Code ist jetzt so verwoben, dass es schwierig ist, ihn richtig auszulösen:)

Als eine Randnotiz ist es schlecht, sich darauf zu verlassen, dass die TypeError abgefangen und stattdessen nur ein arg übergeben wird? d. h. bestimmte Argumente bewusst weggelassen werden, wo sie nicht benötigt werden?

    
mpen 08.07.2010, 22:47
quelle

2 Antworten

18

Wenn die Filteranweisung im inneren Versuch eine Ausnahme auslöst, wird sie zuerst mit der inneren Menge von "except" -Anweisungen abgeglichen und dann, wenn keine davon sie abfängt, wird sie mit der äußeren Menge von "except" verglichen. Aussagen.

Sie können sich selbst überzeugen, dass dies der Fall ist, indem Sie einfach so etwas tun (es wird nur "Wertfehler gefangen") angezeigt:

%Vor%

Als ein anderes Beispiel sollte dieser nur "Gefangen den inneren Wertfehler" drucken:

%Vor%     
Brent Nash 08.07.2010, 22:55
quelle
0

Um Brents Antwort zu ergänzen und den anderen Fall zu testen:

%Vor%

Welche Drucke:

%Vor%     
mpen 08.07.2010 23:01
quelle

Tags und Links