Haftungsausschluss: Das sieht wie ein Duplikat aus, aber eine Antwort auf dieses spezielle Problem zu finden, war mehr als trivial - ich hoffe, dass andere diese Frage / Antwort leichter finden werden!
Wenn ich den folgenden Code ausführe, kann der zweite IndexError nicht abgefangen werden, sondern stattdessen:
%Vor%führt zu
%Vor% Das Problem war eine schlechte Verwendung von except ...
Syntax. Die Linie:
sollte
sein %Vor% Erklärung : Wenn Sie die ausgelöste Ausnahme prüfen möchten, lautet die Syntax except <exception-class>,e
, wobei der Variablen e
eine Instanz von <exception-class>
zugewiesen ist. Folgendes passiert im fehlerhaften Code:
open("afile",'x')
gibt ValueError
aus, da 'x'
keine gültige Dateimoduszeichenfolge ist. except ValueError,IndexError
weist die geworfene Instanz ValueError
einer neuen Variablen namens IndexError
. IndexError
. l[4]
löst eine tatsächliche IndexError
Ausnahme aus. except
-Klausel wird für diesen Ausnahmetyp geprüft, aber nur eine Instanz von ValueError
(die zufällig den Namen IndexError
hat) wird gefunden, so dass die Ausnahme nicht abgefangen wird. Wenn Sie eine interaktive Python-Sitzung ausführen, können Sie mit del IndexError
das eingebaute Objekt aufdecken und% code_% wieder abfangen.
Tags und Links python exception-handling python-2.7