Programación Web y Scripting => Python => Mensaje iniciado por: DRiMeR en Lunes 18 de Mayo de 2009, 11:13
Título: raise y except
Publicado por: DRiMeR en Lunes 18 de Mayo de 2009, 11:13
Pues haciendo la primera clase que intento hacer en python, me ha surgido una duda.
Es simplemente, que cuando he definido un método dentro de la clase, quería comprobar que se hubieran "instanciado" algunos atributos,y en caso negativo lanzar una excepción. El hecho de comprobar los atributos me va bien, pero al lanzar la excepción lo he hecho así:
Código: Text
raise 'NoInicialziado"
Y en el programa principal, tengo un:
Código: Text
try:
v.metodo()
except 'NoInicializado'
Y esto me funciona! Pero Python me lanza el siguiente error:
Código: Text
DeprecationWarning: raising a string exception is deprecated
Esto es grave?? O debería hacerlo de otra forma?
Título: Re: raise y except
Publicado por: RadicalEd en Lunes 18 de Mayo de 2009, 15:29
Prueba así:
Código: Python
try:
....v.metodo()
except:
....print'No inicializado'
Creo que de esa forma es más fácil.
Título: Re: raise y except
Publicado por: DRiMeR en Lunes 18 de Mayo de 2009, 16:04
Es verdad, así me funciona. el raise y el except los he dejado sin la cadenay perfecto.
Pero y si quisiera distinguir entre varios tipos de excepciones?? Como por ejemplo, una que se produzca durante el manejo de archivos, y otra durante la conexión a una web. Son ejemplos... no quiero hacer nada de eso, pero es que ya me gustaría saberlo.
Un saludo. Y gracias.
Título: Re: raise y except
Publicado por: RadicalEd en Lunes 18 de Mayo de 2009, 16:15
Para manejar varias excepciones puedes hacerlo de esta forma
Código: Python
except(error1, error2, error2, errorN):
except error1:
....codigo
except error2:
....codigo
except error3:
....codigo
except errorN:
....codigo
Busca dentro de los manuales de Python (http://docs.python.org), recuerda también que el raise es para generar la excepción.
Título: Re: raise y except
Publicado por: DRiMeR en Lunes 18 de Mayo de 2009, 17:29
Ok, muchas gracias. Ahora todo me cuadra más... ejejej