La réponse courte est que les deux raise MyException
et raise MyException()
faire la même chose. Ce premier formulaire instancie automatiquement votre exception.
La section appropriée de la documentation dit: " rise évalue la première expression comme objet d'exception. Il doit s'agir d'une sous-classe ou d'une instance de BaseException. S'il s'agit d'une classe, l'instance d'exception sera obtenue en cas de besoin en instanciant la classe avec pas d'arguments. "
Cela dit, même si la sémantique est la même, la première forme est microscopiquement plus rapide, et la seconde forme est plus flexible (car vous pouvez lui transmettre des arguments si nécessaire).
Le style habituel que la plupart des gens utilisent en Python (c'est-à-dire dans la bibliothèque standard, dans les applications courantes et dans de nombreux livres) est à utiliser raise MyException
lorsqu'il n'y a pas d'arguments. Les utilisateurs n'instancient l'exception directement que lorsque certains arguments doivent être passés. Par exemple: raise KeyError(badkey)
.