83 votes

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

Pourquoi Python exceptions nommé "Erreur" (par exemple, ZeroDivisionError, NameError, TypeError, etc) et non pas "d'Exception" (par exemple, ZeroDivisionException, NameException, TypeException, etc).

Je viens d'une Java d'arrière-plan et a commencé à apprendre le langage Python récemment, en tant que tel, cela est source de confusion car en java il y a une distinction entre l'erreur et d'exception.

Est-il une différence en Python aussi ou pas? Quelqu'un peut m'expliquer ou m'indiquer un peu de documentation à l'expliquer?

Merci!!!!

98voto

Jacek Konieczny Points 4002
  1. Vous n'avez pas le nom de chaque classe avec "Classe" dans le nom et chaque variable avec "_variable' dans leur nom. Le même nom que vous n'avez pas de nom d'exception en utilisant le mot "Exception". Le nom doit dire quelque chose à propos de la signification de l'objet. "Erreur" est le sens de la plupart des exceptions.

  2. Pas toutes les Exceptions sont des Erreurs. SystemExit, KeyboardInterrupt, StopIteration, GeneratorExit sont de toutes les exceptions et pas d'erreurs. Le mot "Erreur" dans les erreurs actuelles montre la différence.

  3. "Erreur" est plus court que "Exceptions". Que pouvez économiser quelques caractères dans le code de la largeur, sans perte de sens. Que fait une certaine différence.

50voto

daotoad Points 17916

Je crois que cette convention provient de PEP 8 - Style Guide for Python Code :

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 réellement une erreur).

9voto

extraneon Points 13362

Python est assez similaire à Java à cet égard. Mais Python Exception doit être comparé à Java de Throwable.

Comme Throwables viennent dans toutes sortes de saveurs, d'Erreur, de RuntimeException et (vérifié) Exception, donc n'en Python (mais pas vérifié exceptions).

Comme pour la langue, et l'Erreur est exceptionnelle, de sorte que la hiérarchie d'héritage n'est pas étrange.

Je n'aime pas particulièrement le nom de l'Exception, bien que. Les Exceptions ne sont pas seulement utilisés pour des circonstances exceptionnelles (comme nous l'espérons Erreurs), mais aussi de sortir du flux de contrôle. Parce que c'est ce qu'une Exception; il saute hors de la circulation normale 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 l'absence de valeur de retour peut être trouvée, vous ont tendance à utiliser une Exception. Les deux en Python comme en Java.

2voto

miku Points 63392

Disclaimer: je ne sais pas exactement. Je suppose sa convention - dans le sens qu'une Exception peut avoir n'importe quel nom, et les noms sont choisis pour son sens.

Il y a même des exceptions qui sont appelés StopIteration ou GeneratorExit. Je suppose que ces exemples sonores plus concis qu' StopIterationException ou GeneratorException.

1voto

gustafc Points 13552

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X