2011-07-08 14 views
12

Ahora mismo tengo una clase de excepción en blanco. Me preguntaba cómo puedo darle una variable cuando se levanta y luego recuperar esa variable cuando lo manejo en el intento ... excepto.¿Cómo pasar una variable a una excepción cuando se genera y recuperarla cuando se exceptúa?

class ExampleException (Exception): 
    pass 
+3

'__init__' es tu amigo. –

+1

[Buen ejemplo] (http://stackoverflow.com/a/1319675/201665) si desea conservar el comportamiento del mensaje predeterminado. –

Respuesta

21

Dale su constructor una discusión, tienda que como un atributo, luego recuperarlo en la cláusula except:

class FooException(Exception): 
    def __init__(self, foo): 
     self.foo = foo 

try: 
    raise FooException("Foo!") 
except FooException as e: 
    print e.foo 
0

Usted puede hacer esto.

try: 
    ex = ExampleException() 
    ex.my_variable= "some value" 
    raise ex 
except ExampleException, e: 
    print(e.my_variable) 

Funciona bien.

+0

Aunque este trabajo, no es una buena práctica establecer atributos de objetos como este. El enfoque de respuesta aceptada de hacer esto dentro de '__init__' es mejor. –

Cuestiones relacionadas