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

lasizoillo lasizoillo en gmail.com
Mie Ago 26 15:32:04 CEST 2009


El 26 de agosto de 2009 13:14, Francisco Javier
Cuadrado<fcocuadrado en gmail.com> escribió:
> El 26 de agosto de 2009 12:37, Félix Palazuelos
> Pérez<felixpalazuelos en gmail.com> escribió:
>> 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 {
>  ....
> }

Imagina el siguiente ejemplo:

public int QueMeVoyDeVacasNeng(n) throws Exception{
   if(n%2)
     Ejemplo();
     EjemploDelJonan();
}

Tu compañero el Jonan de Baraka te ha dejado ese codigo y ha marchado
que pim, que pam tumbando aguja para su tierra. La función no tiene
JavaDoc, todas las excepciones estan encapsuladas en Exception. Además
el Jonan es muy dado a hacer sus propias excepciones descendientes de
RuntimeException y no dejan rastro en la signature al pasar el javadoc
(que además no se ha currado), por lo que EjemploDelJonan puede o no
lanzar excepciones no chequeadas.

La forma de lidiar el problema en python es igual que la de este
ejemplo (dramatico) en Java, pero sin la falsa seguridad de creer que
las excepciones son chequeadas por el lenguaje. Cuando revises el
codigo, tendrás claro si EjemploDelJonan se ejecuta con n impar o no
;-)

Espero que esto te ayude un poco a plantear tu tratamiento de
excepciones en python (y en java).

>
> Además de que la documentación de Java detalla las excepciones que lanza.
>
Casi siempre y cuando el que lo hace no es el Jonan ;-)

> 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.
>

No conozco nada, pero si encuentras algo compártelo.


Un saludo:

Javi
_______________________________________________
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