Vale muy bien, ya sabemos cómo se usan los try. Pero..... no está mal saber que clases de excepciones estándar tenemos disponibles. Os paso un diagrama en árbol de las excepciones estándar más comunes. La más genérica es exception pero si queremos realizar diferentes tratamientos no estaría mal saber algunas más.
Un ejemplo de su usoException(*) | +-- SystemExit +-- StandardError(*) | +-- KeyboardInterrupt +-- ImportError +-- EnvironmentError(*) | | | +-- IOError | +-- OSError(*) | +-- EOFError +-- RuntimeError | | | +-- NotImplementedError(*) | +-- NameError +-- AttributeError +-- SyntaxError +-- TypeError +-- AssertionError +-- LookupError(*) | | | +-- IndexError | +-- KeyError | +-- ArithmeticError(*) | | | +-- OverflowError | +-- ZeroDivisionError | +-- FloatingPointError | +-- ValueError +-- SystemError +-- MemoryError
parsed = False while not parsed: try: x = int(raw_input('Mete el primer valor: ')) y = int(raw_input('Mete el segundo valor: ')) result= x/y except ValueError: print 'Numero introducido erroneo!!!' except ZeroDivisionError: print "dividir por CERO!! LOKO!!" else: parsed = True print "resultado: ", resultSi queremos provocar la ejecución de una excepción podemos usar raiser.
try: raise Exception() except: print "ERROR: ", sys.exc_type + ":", sys.exc_valuePor último nos crearemos nuestra propia excepción.
class MyPropioError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value) try: raise MyPropioError("Algo muy gordo a pasado") except MyPropioError, e: print 'Se ha ejecutado, value:', e.valueEsto mostrará el texto "Algo muy gordo a pasado"
No hay comentarios:
Publicar un comentario