Re: [Python-es] Saber que excepciones lanza una función

Hernan M Foffani hfoffani en gmail.com
Mie Ago 26 16:08:49 CEST 2009


>>>> Yo las veo ejecutando con la consola, y ahí te saldrán los errores o
>>>> excepciones que puedas tener. La verdad, no sé a qué te refieres :S
>>>
>>> Hola.
>>>
>>> Básicamente, a lo que me refiero es cómo puedo saber las excepciones
>>> que lanzará una función dependiendo de cuando falle, sin hacer prueba
>>> y error.
>>>
>>> En Java es fácil porque la declaración del método lleva las
>>> excepciones que lanza, por ejemplo:
>>>
>>> public int Ejemplo () throws Exc1, Exc2, Exc3 {
>>>  ....
>>> }
>>>
>>> Además de que la documentación de Java detalla las excepciones que lanza.
>>>
>>> Pero en Pyhon si tuviera ese método tendría que mirar la
>>> documentación, en algunos casos la documentación no explica las
>>> excepciones que lanzará, o el código para ver las excepciones que
>>> lanza, a lo que mi duda es si hay alguna manera (p. ej. alguna función
>>> de Python) de saber que excepciones lanza el método.
>>>
>>> Mi caso particular es django, que la documentación no explica las
>>> excepciones que lanzará la función.
>>
>> No se puede. Python no tiene checked exceptions.
>
> Ya por curiosidad, cuando tienes una función en la que no documentan
> sus excepciones, ¿cómo haces para saber qué excepciones puede lanzar?

Ni lo intento. :-P

En realidad no hay forma (ni siquiera en Java, como ya han comentado) de
saber a ciencia cierta qué excepciones podría lanzar un trozo de código en
cualquier circunstancia de ejecución.

Como norma general, no atrapo excepciones hasta el momento en que el
consumidor pueda tomar alguna acción positiva y sólo hago distinciones entre
las excepciones si me interesa tomar caminos perfectamente diferenciados
ante cada excepción y ésto último sólo se da en contadísimos casos que muy
probablemente ya están identificados por el dominio de la aplicación.

En la práctica para la 99% de los casos no hay diferencias entre un error porque
el disco está lleno y otro porque no el usuario no tiene permiso de escritura en
un directorio.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es