Warum sind die Python-exceptions mit dem Namen "Fehler"?
Warum sind die Python-exceptions mit dem Namen "Fehler" (z.B. ZeroDivisionError
, NameError
, TypeError
)
und nicht "Ausnahme" (z.B. ZeroDivisionException
, NameException
, TypeException
).
Ich komme aus einem Java-hintergrund und begann zu lernen Python vor kurzem, als solche, dies ist verwirrend, da in Java gibt es eine Unterscheidung zwischen Fehlern und Ausnahmen.
Gibt es einen Unterschied in Python auch, oder nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht die Namen jeder Klasse mit "Class" in-name und die einzelnen Variablen mit "_variable" im Namen. Die gleiche Weise, die Sie nicht name exception mit dem Wort 'Ausnahme'. Ein name sollte etwas sagen über die Bedeutung eines Objekts. 'Fehler' ist die Bedeutung der meisten Ausnahmen.
Nicht alle Ausnahmen sind Fehler, die.
SystemExit
,KeyboardInterrupt
,StopIteration
,GeneratorExit
sind alles Ausnahmen und nicht als Fehler. Das Wort "Fehler" im eigentlichen Fehler zeigt den Unterschied.'Fehler' ist kürzer als 'Ausnahme'. Sparen kann, dass ein paar Zeichen in die code-Breite ohne Verlust an Bedeutung. Das macht einen Unterschied.
Warning
. Bitte siehe meine Antwort.Ich glaube, dass diese Konvention stammt aus PEP 8 - Style Guide for Python Code:
Python ist ähnlich wie Java in dieser Hinsicht. Aber Python ist, sollte die Ausnahme sein, im Vergleich zu Java Throwable.
Als Throwables kommen in allen Arten von Aromen - Error, RuntimeException und die (checked) Exception - so tun Python ' s (obwohl nicht aktiviert Ausnahmen).
Als für die Sprache, ein Fehler ist außergewöhnlich, so dass die Vererbungshierarchie ist nicht verwunderlich.
Ich nicht besonders wie der name, Ausnahme obwohl. Ausnahmen sind nicht nur für außergewöhnliche Umstände (wie hoffentlich Fehler) aber auch nur aus der Ablaufsteuerung. Denn das ist es, was eine Ausnahme bedeutet; es springt aus dem normalen Ablauf der Steuerung zu einem markierten Punkt. Ein bisschen wie ein "goto", aber mehr verfeinert.
Sagte, jedes mal, wenn Sie eine situation, in der keine geeigneten Rückgabewert gefunden werden können, neigen Sie dazu, verwenden Sie eine Ausnahme. Sowohl in Python als in Java.
Error
in Ihrem Namen.Ich vermute das ist weil die meisten Python Ausnahmen sind klassifiziert als entweder Fehler oder Warnungen. Wenn die Namen der Python Ausnahmen waren zu Ende mit
Exception
diese Unterscheidung nicht möglich wäre.Beispiele für Warnungen sind
DeprecationWarning
undImportWarning
.Finden Sie die die 2.x Klassenhierarchie für built-in exceptions sowie für 3.x.
Es ist nur die Benennung. In Java haben Sie
java.lang.Error
sich deutlich von anderenThrowable
s, weil diese Art von Fehlern müssen deaktiviert sein. In Python, werden alle Ausnahmen deaktiviert sind, so dass die Unterscheidung ist irgendwie sinnlos.class ExceptionHandlingException extends RuntimeException
und das ist einfach nur schrecklich zu Lesen.Einfach ausgedrückt:
Exception
kann auch erhöht werden direktKonzept:
ODER
Ist dies meist ein Fehler, aber wir werden eine Ausnahme machen, fangen, und die Durchführung einiger Verfahren.
Details:
Exceptions vs. Errors:
https://docs.python.org/2/tutorial/errors.html
Workflow: