Est-ce que re.compile() ou tout autre appel de bibliothèque Python lève une exception ?
Question
Je ne peux pas dire à partir de la documentation Python si la fonction re.compile(x) peut lever une exception (en supposant que vous transmettez une chaîne).J'imagine qu'il y a quelque chose qui pourrait être considéré comme une expression régulière invalide.La plus grande question est la suivante : où puis-je savoir si un appel de bibliothèque Python donné peut lever des exceptions et quelles sont-elles ?
La solution
Bien, re.compile
peut certainement :
>>> import re
>>> re.compile('he(lo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python25\lib\re.py", line 180, in compile
return _compile(pattern, flags)
File "C:\Python25\lib\re.py", line 233, in _compile
raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis
La documentation prend en charge cela, de manière détournée - consultez le bas de la page "Contenu du module" pour une (brève) description du error
exception.
Malheureusement, je n'ai pas de réponse à la question générale.Je suppose que la documentation des différents modules varie en qualité et en rigueur.S'il y avait des modules particuliers qui vous intéressaient, vous pourrez peut-être décompiler eux (s'ils sont écrits en Python) ou même regarde la source, s'ils se trouvent dans la bibliothèque standard.
Autres conseils
Contrairement à Java, où certaines exceptions doivent être déclarées pour être déclenchées (et d'autres ne doivent pas nécessairement l'être, mais c'est une autre histoire), tout code Python peut déclencher n'importe quelle exception à tout moment.
Il existe une liste de exceptions intégrées, qui contient généralement une description du moment où ces exceptions peuvent être invoquées.C'est à vous de décider dans quelle mesure vous gérerez les exceptions et si vous gérerez les choses avec élégance ou si vous échouerez simplement avec un traçage.