miércoles, 28 de mayo de 2008

Tratamiento de excepciones en python

En la mayoría de lenguajes de programación tenemos herramientas para manejar las excepciones que se produzcan, paso a comentar las existentes en python.

Si ejecutamos el siguiente programa se producirá una execpción debida a la división entre cero.

#!/usr/bin/python

a=10/0;
print a;

Se puede controlar la excepción de la siguiente forma.

#!/usr/bin/python

try:
a=10/0;
print a;

except:
print "Problema dividiendo";

Se pueden tratar los errores por separado.

#!/usr/bin/python

try:
a=10/0;
print a;

except ZeroDivisionError:
print "El divisor es cero";

except:
print "Otro error";

Se puede ejecutar código si no se produce la excepción, será lo representado por la cláusula else.

#!/usr/bin/python

try:
a=10/0;

except ZeroDivisionError:
print "El divisor es cero";

else:
print a;

O incluso se puede ejecutar código tanto si se produce la excepción como si no, con la cláusula finally.

#!/usr/bin/python

try:
a=10/0;

except ZeroDivisionError:
print "El divisor es cero";

finally:
print "Necesitamos seguir aunque cometamos errores";

Podemos también definir nuestras propias excepciones, para ello debemos crear una clase que herede de Exception. La excepción se lanzará con raise.

#!/usr/bin/python

class MiExcepcion(Exception):
def __init__(self, valor):
self.valor = valor

def __str__(self):
return str(self.valor) + ": se ha cometido al intentar realizar la operacion"

var=2;
if var < 10:
raise MiExcepcion("Valor enano");

Por supuesto las excepciones que lancemos también se pueden capturar y tratar.

#!/usr/bin/python

class MiExcepcion(Exception):
def __init__(self, valor):
self.valor = valor

def __str__(self):
return str(self.valor) + ": se ha cometido al intentar realizar la operacion"

try:
var=2;
if var < 10:
raise MiExcepcion("Valor enano");

except:
print "Tranquilidad que lo podemos solucionar todavia";

0 comentarios: