Zunächst einmal - ich habe kein Problem mit schlecht eingeprägtem Code und ich habe eine Vorstellung davon, wie diese Ausnahme funktioniert.
Ich frage, ob es eine Möglichkeit gibt, IndentationError im Code mit einem try / except-Block zu fangen. Angenommen, ich schreibe einen Test für eine Funktion, die von jemand anderem geschrieben wurde. Ich möchte es in try / except Block laufen lassen und alle Warnungen behandeln, die er / sie machen könnte. Ich weiß, dass es kein gutes Beispiel ist, aber das erste kommt mir in den Sinn. Bitte konzentrieren Sie sich nicht auf ein Beispiel, sondern auf ein Problem.
Schauen wir uns den Code an:
%Vor%Die Funktion:
%Vor%Und das Ergebnis ist:
%Vor%Und das ist etwas, ich bin bereit zu verstehen, weil Einrückung in der externen Funktion konsistent war.
Aber wenn die Funktion so aussieht:
%Vor%Die Ausnahme ist nicht behandelt:
%Vor% Gibt es einen Weg, es zu erreichen? Ich denke, das ist die Frage des Kompilierens, und soweit sehe ich keine Möglichkeit zu fangen. Macht der except IndentationError
Sinn?
Ja, das kann gemacht werden. Die zu testende Funktion müsste jedoch in einem anderen Modul leben:
%Vor%Wenn diese Option ausgeführt wird, wird die Ausnahme korrekt abgefangen. Es ist nichts wert, dass die Überprüfung auf das gesamte Modul gleichzeitig erfolgt; Ich bin mir nicht sicher, ob es einen Weg gibt, es feinkörniger zu machen.
IndentationError
wird ausgelöst, wenn das Modul kompiliert wird. Sie können > es beim Importieren eines Moduls abfangen, da das Modul beim ersten Import kompiliert wird. Sie können es nicht im selben Modul abfangen, das try/except
enthält, weil Python mit dem IndentationError
nicht fertig ist, das Modul zu kompilieren, und kein Code im Modul ausgeführt werden.
Tags und Links python exception-handling indentation