¿Re.compile() o cualquier llamada a la biblioteca de Python genera una excepción?
Pregunta
No puedo decir en la documentación de Python si la función re.compile(x) puede generar una excepción (suponiendo que pase una cadena).Me imagino que hay algo que podría considerarse una expresión regular no válida.La pregunta más importante es: ¿adónde puedo ir para saber si una determinada llamada a la biblioteca de Python puede generar excepciones y cuáles son?
Solución
Bien, 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 admite esto, de manera indirecta: consulte la parte inferior de la página "Contenido del módulo" para obtener una descripción (breve) del error
excepción.
Lamentablemente, no tengo ninguna respuesta a la pregunta general.Supongo que la documentación de los distintos módulos varía en calidad y minuciosidad.Si hubiera módulos específicos que le interesaran, es posible que pueda descompilar ellos (si están escritos en Python) o incluso mira la fuente, si están en la biblioteca estándar.
Otros consejos
A diferencia de Java, donde hay excepciones que deben declararse para ser generadas (y algunas que no tienen que serlo, pero esa es otra historia), cualquier código Python puede generar cualquier excepción en cualquier momento.
Hay una lista de excepciones incorporadas, que generalmente tiene alguna descripción de cuándo podrían plantearse estas excepciones.Depende de usted cuánto manejo de excepciones realizará y si manejará las cosas con elegancia o simplemente fallará con un rastreo.