Re: Saber que excepciones lanza una función
Chema Cortes <[email protected]>
| Newsgroups | gmane.comp.python.general.castellano |
|---|---|
| Organization | ch3m4.org |
| Message-ID | <[email protected]> |
>Ya por curiosidad, cuando tienes una función en la que no documentan
>sus excepciones, ¿cómo haces para saber qué excepciones puede lanzar?
Por contra de lo que afirma Hernan, sí creo que algo se puede hacer usando la
"introspección". Si un módulo está programado como debe, las excepciones
definidas serán subtipos de la clase Exception, por lo que se podría obtener
un listados de excepciones con un código cómo éste:
from types import ModuleType
def find_exceptions(module):
exceptions=[]
for k,o in vars(module).iteritems():
if isinstance(o,type):
if isinstance(o,ModuleType):
exceptions.extend(find_exceptions(o))
elif issubclass(o,BaseException):
exceptions.append(k)
return exceptions
Por ejemplo, para saber las excepciones del módulo "sqlite3":
import sqlite3
print find_exceptions(sqlite3)
---> ['Warning', 'InternalError', 'ProgrammingError', 'NotSupportedError',
'DataError', 'IntegrityError', 'Error', 'InterfaceError', 'DatabaseError',
'OperationalError']
No puedes asegurar dónde están definidas estas excepciones, si las define el
propio módulo o si se las apropia, pero al menos te puede dar una idea de por
dónde va la cosa. Por poner un contraejemplo, el módulo "math" no define
ninguna excepción de todas las que usa, por lo que de nada sirve en este caso
la introspección.
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
signature.asc
(application/pgp-signature, 190 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.11 (GNU/Linux) iD8DBQBKlhOTa1V4BoHtm6IRAq1gAJ0SaP5NUvDQXirxA/CN3JmC6imK/wCgu2dN UnHBqIjsId/A4fspq/mCpFs= =PAH4 -----END PGP SIGNATURE-----