Pourquoi les exceptions Python sont-elles nommées “Erreur”?

Pourquoi les exceptions Python sont-elles nommées “Error” (par exemple ZeroDivisionError , NameError , TypeError ) et non “Exception” (par exemple ZeroDivisionException , NameException , TypeException ).

Je viens d’un contexte Java et j’ai commencé à apprendre Python récemment, car cela crée de la confusion car en Java, il y a une distinction entre les erreurs et les exceptions.

Y a-t-il une différence en Python également ou non?

  1. Vous ne nommez pas chaque classe avec ‘Class’ dans le nom et chaque variable avec ‘_variable’ dans le nom. Le même nom que vous ne nommez pas exception en utilisant le mot «Exception». Le nom devrait dire quelque chose sur la signification de l’object. “Erreur” est le sens de la plupart des exceptions.

  2. Toutes les exceptions ne sont pas des erreurs. SystemExit , KeyboardInterrupt , StopIteration , GeneratorExit sont tous des exceptions et non des erreurs. Le mot «erreur» dans les erreurs réelles montre la différence.

  3. “Erreur” est plus courte que “Exception”. Que peut enregistrer quelques caractères dans la largeur du code sans perte de sens. Cela fait une différence.

Je crois que cette convention vient du PEP 8 – Guide de style pour le code Python :

Noms d’exception

Comme les exceptions doivent être des classes, la convention de dénomination de classe s’applique ici. Toutefois, vous devez utiliser le suffixe “Erreur” sur vos noms d’exception (si l’exception est en réalité une erreur).

Python est assez similaire à Java à cet égard. Mais les exceptions de Python doivent être comparées à celles de Java.

Comme Throwables se présente sous toutes les formes – Error, RuntimeException et (checked) Exception – il en va de même pour Python (bien qu’aucune exception ne soit vérifiée).

En ce qui concerne le langage, une erreur est exceptionnelle, de sorte que la hiérarchie d’inheritance n’est pas étrange.

Je n’aime pas particulièrement le nom Exception si. Les exceptions ne sont pas seulement utilisées dans des circonstances exceptionnelles (comme les erreurs, espérons-le), mais également pour sortir du stream de contrôle. Parce que c’est ce que fait une exception; il saute du stream normal de contrôle à un point marqué. Un peu comme un goto, mais plus raffiné.

Cela dit, chaque fois que vous avez une situation dans laquelle aucune valeur de retour ne peut être trouvée, vous avez tendance à utiliser une exception. Tant en Python qu’en Java.

Q. Pourquoi les exceptions Python sont-elles nommées «Erreur»?

Je suppose que c’est parce que la plupart des exceptions Python sont classées comme des erreurs ou des avertissements . Si les noms des exceptions Python devaient se terminer par une Exception , cette distinction ne serait pas possible.

Des exemples d’avertissements sont DeprecationWarning et ImportWarning .

Veuillez consulter la hiérarchie des classes 2.x pour les exceptions intégrées ainsi que celle pour 3.x.

C’est juste nommer. En Java, java.lang.Error distinct des autres Throwable car ces types d’erreurs doivent être décochés. En Python, toutes les exceptions ne sont pas contrôlées, la distinction est donc inutile.