Warum Python Ausnahmen genannt "Error" (zB ZeroDivisionError
, NameError
, TypeError
) und nicht "Exception" (zB ZeroDivisionException
, NameException
, TypeException
).
Ich komme aus Java und habe kürzlich angefangen, Python zu lernen. Daher ist dies verwirrend, da in Java zwischen Fehlern und Ausnahmen unterschieden wird.
Gibt es auch einen Unterschied in Python oder nicht?
Warning
. Bitte sehen Sie meine Antwort .Ich glaube, diese Konvention stammt aus PEP 8 - Style Guide für Python-Code :
quelle
Python ist Java in dieser Hinsicht ziemlich ähnlich. Aber Pythons Ausnahme sollte mit Javas Throwable verglichen werden.
Da Throwables in allen möglichen Varianten erhältlich sind - Fehler, RuntimeException und (aktivierte) Ausnahme - gilt dies auch für Pythons (obwohl keine aktivierten Ausnahmen).
In Bezug auf die Sprache ist ein Fehler außergewöhnlich, sodass die Vererbungshierarchie nicht ungewöhnlich ist.
Ich mag den Namen Exception allerdings nicht besonders. Ausnahmen werden nicht nur für außergewöhnliche Umstände (wie hoffentlich Fehler) verwendet, sondern auch, um einfach aus dem Kontrollfluss herauszukommen. Denn genau das macht eine Ausnahme. es springt aus dem normalen Kontrollfluss zu einem markierten Punkt. Ein bisschen wie ein Goto, aber raffinierter.
Das heißt, jedes Mal, wenn Sie eine Situation haben, in der kein geeigneter Rückgabewert gefunden werden kann, neigen Sie dazu, eine Ausnahme zu verwenden. Sowohl in Python als auch in Java.
quelle
Error
in ihrem Namen enthalten sind.Ich vermute, das liegt daran, dass die meisten Python-Ausnahmen entweder als Fehler oder als Warnungen klassifiziert sind . Wenn die Namen der Python-Ausnahmen enden würden
Exception
, wäre diese Unterscheidung nicht möglich.Beispiele für Warnungen sind
DeprecationWarning
undImportWarning
.Bitte beachten Sie die die 2.x Klassenhierarchie für eingebaute Ausnahmen sowie die für 3.x .
quelle
Einfach gesagt:
Exception
kann auch direkt angehoben werdenKonzept:
ODER
Dies wäre normalerweise ein Fehler, aber wir werden eine Ausnahme machen, sie abfangen und eine Prozedur ausführen.
Einzelheiten:
Ausnahmen gegen Fehler:
https://docs.python.org/2/tutorial/errors.html
Arbeitsablauf:
quelle
Es ist nur eine Benennung. In Java unterscheiden Sie sich
java.lang.Error
von anderenThrowable
s, da diese Art von Fehlern deaktiviert werden muss. In Python sind alle Ausnahmen deaktiviert, daher ist die Unterscheidung irgendwie sinnlos.quelle
class ExceptionHandlingException extends RuntimeException
und das ist einfach schrecklich zu lesen.