transitorio - ¿Re.compile() o cualquier llamada dada de la biblioteca de Python lanza una excepción?
modelo transitorio odoo (2)
No puedo decir a partir de la documentación de Python si la función re.compile (x) puede lanzar una excepción (suponiendo que pase una cadena). Imagino que hay algo que podría considerarse una expresión regular inválida. La pregunta más importante es, ¿a dónde voy para encontrar si una llamada dada de la biblioteca de Python puede arrojar excepciones y cuáles son?
Bueno, re.compile
ciertamente puede:
>>> 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 documentación sí lo admite, de forma indirecta: verifique en la parte inferior de la página "Contenido del módulo" la descripción (breve) de la excepción de error
.
Lamentablemente, no tengo ninguna respuesta a la pregunta general. Supongo que la documentación de los distintos módulos varía en calidad y exhaustividad. Si hubiera módulos particulares que le interesaban, podría descompilarlos (si están escritos en Python) o incluso buscarlos en la fuente , si están en la biblioteca estándar.
A diferencia de Java, donde hay excepciones que deben declararse para ser elevadas (y algunas que no tienen que ser, pero esa es otra historia), cualquier código de Python puede generar cualquier excepción en cualquier momento.
Hay una lista de excepciones incorporadas , que generalmente tiene alguna descripción de cuándo se pueden generar estas excepciones. Depende de usted la cantidad de manejo de excepciones que hará, y si manejará las cosas con gracia, o simplemente fallará con un rastreo.