it-swarm.com.de

Warum heißen Python-Ausnahmen "Fehler"?

Warum heißen Python-Ausnahmen "Fehler" (z. B. ZeroDivisionError, NameError, TypeError) und nicht "Ausnahme" (z. B. ZeroDivisionException, NameException, TypeException)?.

Ich komme aus Java und habe kürzlich angefangen, Python zu lernen. Dies ist verwirrend, da in Java zwischen Fehlern und Ausnahmen unterschieden wird.

Gibt es auch einen Unterschied in Python oder nicht?

62
Elena
  1. Sie benennen nicht jede Klasse mit 'Class' im Namen und jede Variable mit '_variable' im Namen. Derselbe Name, für den Sie keine Ausnahme mit dem Wort "Ausnahme" benennen. Der Name sollte etwas über die Bedeutung des Objekts erzählen. 'Fehler' ist die Bedeutung der meisten Ausnahmen.

  2. Nicht alle Ausnahmen sind Fehler. SystemExit, KeyboardInterrupt, StopIteration, GeneratorExit sind Ausnahmen und keine Fehler. Das Wort "Fehler" in tatsächlichen Fehlern zeigt den Unterschied.

  3. 'Fehler' ist kürzer als 'Ausnahme'. Dann können einige Zeichen in der Codebreite ohne Bedeutungsverlust gespeichert werden. Das macht einen Unterschied. 

74
Jacek Konieczny

Ich glaube, diese Konvention kommt aus PEP 8 - Style Guide für Python Code :

Ausnahme-Namen

Da Ausnahmen Klassen sein sollen, gilt hier die Klassennamenskonvention . Sie sollten jedoch das Suffix "Error" für Ihre Ausnahmenamen verwenden (wenn die Ausnahme tatsächlich ein Fehler ist).

42
daotoad

Python ist in dieser Hinsicht Java sehr ähnlich. Aber Pythons Ausnahme sollte mit Javas Throwable verglichen werden. 

Da Throwables in allen möglichen Varianten erhältlich sind - Fehler, RuntimeException und (geprüfte) Ausnahme -, ist dies auch bei Python der Fall (jedoch keine geprüften Ausnahmen).

In Bezug auf die Sprache ist ein Fehler außergewöhnlich, sodass die Vererbungshierarchie nicht ungewöhnlich ist.

Ich mag den Namen Exception jedoch nicht besonders. Ausnahmen werden nicht nur für außergewöhnliche Umstände (wie hoffentlich Fehler) verwendet, sondern auch, um den Kontrollfluss zu verlassen. Weil dies eine Ausnahme ist. es springt aus dem normalen Steuerfluss zu einem markierten Punkt. Ein bisschen wie ein goto, aber mehr verfeinert.

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. 

8
extraneon

Q. Warum werden Python-Ausnahmen als "Fehler" bezeichnet?

Ich vermute, dies ist, weil die meisten Python-Ausnahmen entweder als errors oder warnings klassifiziert werden. Wenn die Namen von Python-Ausnahmen mit Exception enden würden, wäre diese Unterscheidung nicht möglich.

Beispiele für Warnungen sind DeprecationWarning und ImportWarning.

In der 2.x-Klassenhierarchie finden Sie integrierte Ausnahmen sowie die für 3.x .

4
DavidRR

Es ist nur eine Benennung. In Java unterscheiden Sie Java.lang.Error von anderen Throwables, da diese Arten von Fehlern deaktiviert werden müssen. In Python sind alle Ausnahmen unkontrolliert, so dass der Unterschied irgendwie sinnlos ist.

1
gustafc

Einfach ausgedrückt:

  • Python-Ausnahmen heißen NICHT "Fehler".
  • Python-Fehler werden "Fehler" genannt.
  • Python-Fehler können ausgelöst, abgefangen und als Ausnahmen behandelt werden.
  • Etwas, das als Fehler beginnt, kann eine behandelte Ausnahme sein, die nicht zu einer Fehlermeldung führt.
  • Ein Exception kann auch direkt ausgelöst werden

Konzept:

Normalerweise mache ich das, aber ich mache eine Ausnahme

ODER

Dies wäre normalerweise ein Fehler, aber wir machen eine Ausnahme, fangen sie ab und führen eine Prozedur aus.

Details:

Ausnahmen vs. Fehler:

https://docs.python.org/2/tutorial/errors.html

Fehler, die während der Ausführung entdeckt wurden, heißen Ausnahmen und sind nicht Unbedingt tödlich

Arbeitsablauf:

  • Das Programm überwacht Fehler.
  • Wenn ein Fehler auftritt, der aber vom Programm NICHT erkannt wird, wird eine Fehlermeldung angezeigt.
  • Wenn ein Fehler auftritt und während der Ausführung vom Programm erkannt wird, handelt es sich um eine Ausnahme.
  • Ausnahmen können vom Programm behandelt werden. Sie können ordnungsgemäß behandelt werden oder zu einer Fehlermeldung führen.
  • Ausnahmen, die vom Programm NICHT behandelt werden, sind nicht behandelt (nicht erfasst) Ausnahmen und werden zu Fehlermeldungen.
0
Xavier