Est-ce que re.compile() ou tout autre appel de bibliothèque Python lève une exception ?

StackOverflow https://stackoverflow.com/questions/58119

  •  09-06-2019
  •  | 
  •  

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 ?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top