Pourquoi les exceptions Python sont-elles nommées "Erreur" (par exemple, ZeroDivisionError
, NameError
, TypeError
) et non pas "Exception" (par exemple, ZeroDivisionException
, NameException
, TypeException
).
Je viens d’un milieu Java et j’ai commencé à apprendre Python récemment, ce qui est source de confusion car il existe une distinction entre les erreurs et les exceptions.
Y at-il une différence en Python également ou non?
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'objet. "Erreur" est le sens de la plupart des exceptions.
Toutes les exceptions ne sont pas des erreurs. SystemExit
, KeyboardInterrupt
, StopIteration
, GeneratorExit
sont toutes des exceptions et non des erreurs. Le mot "Erreur" dans les erreurs réelles montre la différence.
"Erreur" est plus court que "Exception". Than peut enregistrer quelques caractères dans la largeur du code sans perte de signification. Cela fait une différence.
Je crois que cette convention provient de PEP 8 - Style Guide pour le code Python :
Noms d'exception
Comme les exceptions doivent être des classes, la convention de nommage de classe S'applique ici. Toutefois, vous devez utiliser le suffixe "Erreur" sur vos noms d’exception (Si l’exception est réellement une erreur).
Python est assez similaire à Java à cet égard. Mais Exception de Python doit être comparé à Throwable de Java.
Comme Throwables se présente sous toutes sortes de formes - Erreur, RuntimeException et Exception (cochée) -, il en va de même pour Python (bien qu'aucune exception ne soit cochée).
En ce qui concerne le langage, une erreur est exceptionnelle, de sorte que la hiérarchie d'héritage n'est pas étrange.
Je n'aime pas particulièrement le nom Exception cependant. Les exceptions ne sont pas utilisées uniquement dans des circonstances exceptionnelles (comme des erreurs, espérons-le), mais aussi pour sortir du contrôle. Parce que c'est ce que fait une exception; il saute hors du flux de contrôle normal vers un point marqué. Un peu comme un goto, mais plus raffiné.
Cela dit, chaque fois que vous rencontrez une situation dans laquelle aucune valeur de retour appropriée 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 les exceptions Python sont classées comme suit: errors ou warnings . Si les noms des exceptions Python devaient se terminer par Exception
, cette distinction ne serait pas possible.
Des exemples d'avertissements sont DeprecationWarning
et ImportWarning
.
Veuillez consulter la hiérarchie la classe 2.x pour les exceptions intégrées ainsi que celle pour 3.x .
C'est juste nommer. En Java, vous avez Java.lang.Error
distinct des autres Throwable
s car ces types d’erreurs doivent être décochés. En Python, toutes les exceptions sont décochées, la distinction est donc inutile.
En termes simples:
Exception
peut également être élevé directementConcept:
Je fais normalement cette chose mais je vais faire une exception
OU
Ce serait normalement une erreur, mais nous allons faire une exception, l'attraper et effectuer une procédure.
Détails:
Exceptions vs Erreurs:
https://docs.python.org/2/tutorial/errors.html
Les erreurs détectées pendant l'exécution sont appelées exceptions et ne sont pas fatales Sans condition.
Flux de travail: