113 votes

Y a-t-il une différence entre "raise exception()" et "raise exception" sans parenthèses ?

Définition d'une exception sans paramètre :

class MyException(Exception):
    pass

Lorsqu'elle est soulevée, y a-t-il une différence entre :

raise MyException

et

raise MyException()

Je n'en ai pas trouvé. S'agit-il simplement d'une syntaxe surchargée ?

5voto

Jason Fried Points 61

Allez voir les docs pour le raise déclaration . Il crée une instance de MyException .

-2voto

Yep, il y a une différence entre ValueError y ValueError()

ValueError est une classe alors que ValueError() crée une instance d'une classe. C'est la raison pour laquelle le type(ValueError) is type y type(ValueError()) is ValueError

Le seul but de raise est de lever l'exception,

lorsque nous utilisons ValueError La classe sera appelée et le constructeur sera exécuté. ValueError()

lorsque nous utilisons ValueError() la méthode ValueError() est directement appelé.

Note : raise ValueError # shorthand for 'raise ValueError()'

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