2011-07-08 17 views
12

Ngay bây giờ tôi chỉ có một lớp ngoại lệ trống. Tôi đã tự hỏi làm thế nào tôi có thể cung cấp cho nó một biến khi nó được nâng lên và sau đó lấy biến đó khi tôi xử lý nó trong thử ... ngoại trừ.Làm cách nào để chuyển một biến sang một ngoại lệ khi được nâng lên và truy xuất nó khi ngoại trừ?

class ExampleException (Exception): 
    pass 
+3

'__init__' là bạn của bạn. –

+1

[Ví dụ hay] (http://stackoverflow.com/a/1319675/201665) nếu bạn muốn giữ lại hành vi thư mặc định. –

Trả lời

21

Cho constructor của nó một cuộc tranh cãi, cửa hàng đó như là một thuộc tính, sau đó lấy nó trong mệnh đề except:

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

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

Bạn có thể làm điều này.

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

Hoạt động tốt.

+0

Mặc dù công việc này, nó thường không phải là một thực hành tốt để thiết lập các thuộc tính đối tượng như thế này. Cách tiếp cận câu trả lời được chấp nhận để thực hiện điều này bên trong '__init__' là tốt hơn. –

Các vấn đề liên quan