Sind Python-Exceptions (abgesehen von SyntaxError) Laufzeitfehler?

8

Wenn ich richtig verstehe, generiert der Python-Interpreter bei der Ausführung eines Python-Programms den Bytecode (die .pyc -Datei, die neben der .py -Quelle erscheint), sofern die Quelle keinen Syntaxfehler enthält.

Generiert der Bytecode-Compiler andere Ausnahmen oder werden alle anderen Ausnahmen zur Laufzeit ausgelöst, wenn der .pyc -Code ausgeführt wird?

    
xnx 12.01.2015, 20:05
quelle

2 Antworten

4

Nun, jeder Ausnahmetyp kann technisch während der Laufzeit über raise <exception> ausgelöst werden. Aber ich nehme an, dass Sie das verstehen und fragen, welche Exceptions ausgelöst werden könnten, während Python Ihren Code interpretiert (vor der Ausführung). Es gibt eigentlich einige:

  • SyntaxError : Dies wird vom Parser beim Lesen des Code. Es ergibt sich aus einer ungültigen Syntax wie unausgeglichene Klammern, Verwendung eines Schlüsselworts an der falschen Stelle usw.

  • IndentationError : Dies ist eine Unterklasse von SyntaxError und wird immer dann ausgelöst, wenn Sie Code hat eine falsche Einrückung. Ein Beispiel wäre:

    %Vor%
  • TabError : Dies ist eine Unterklasse von IndentationError und ist Wenn Sie Tabulatoren und Leerzeichen in einer Quelldatei inkonsistent mischen.

  • SystemError : Dies wird vom Interpreter bei einer internen Operation ausgelöst schlägt fehl. Das Betreffen von einem bedeutet normalerweise, dass Ihre Python-Installation durcheinander ist und möglicherweise eine Neuinstallation erfordert.

  • MemoryError : Dies ist ähnlich wie SystemError und kann sein ausgelöst, wenn eine interne Operation wegen fehlendem Speicher fehlschlägt.

Alle diese Ausnahmen können ausgelöst werden, bevor der Code überhaupt ausgeführt wird. Die ersten drei werden durch eine beschädigte Quelldatei verursacht und können durch einfaches Reparieren der Syntax oder des Einzugs gelöst werden. Die letzteren beiden werden jedoch vom Interpreter selbst für interne Operationen, die fehlschlagen, ausgelöst. Dies bedeutet, dass sie selten sind, aber auch, dass sie ernster und nicht so einfach zu beheben sind.

    
iCodez 12.01.2015, 20:38
quelle
1

Wenn Sie mit Python-Code arbeiten, gibt es normalerweise keinen Kompilierungsschritt, daher würde ich behaupten, dass alle Fehler in Python, einschließlich SyntaxErrors, Laufzeitfehler sind.

Lassen Sie uns zum Beispiel diese Datei schreiben:

%Vor%

Das ist offensichtlich nur Unsinn (wir nennen es sogar nonsense.py), aber wir lassen den Interpreter hochgehen:

%Vor%

So, da haben Sie es - ein SyntaxError wurde zur Laufzeit ausgelöst und abgefangen, was meiner Meinung nach zumindest einen Laufzeitfehler anzeigt.

    
ArtOfWarfare 12.01.2015 20:50
quelle

Tags und Links