2014-01-15 118 views
0

我希望我的自定義異常能夠打印自定義消息時引發。我得到這個方法(simplifyed):自定義python異常與自定義消息

class BooError(Exception): 
    def __init__(self, *args): 
     super(BooError, self).__init__(*args) 
     self.message = 'Boo' 

但結果是不能滿足我:

raise BooError('asdcasdcasd') 

輸出:

Traceback (most recent call last): 
    File "hookerror.py", line 8, in <module> 
    raise BooError('asdcasdcasd') 
__main__.BooError: asdcasdcasd 

我希望是這樣的:

... 
__main__.BooError: Boo 

我知道message已棄用。但我不知道什麼是自定義錯誤信息的正確方法?

+5

以什麼方式的結果不能滿足你嗎?你想要什麼結果? – BrenBarn

+0

期望值增加 – I159

+0

可能會在'__init__'方法的底部添加'return self.message'語句?這可能是不好的風格,但可能工作:) –

回答

2

你需要設置args元組,以及:

class BooError(Exception): 
    def __init__(self, *args): 
     super(BooError, self).__init__(*args) 
     self.args = ('Boo',) 
     self.message = self.args[0] 

其中self.message通常從第一args項設置。 message屬性完全被Exception類忽略。

你會好得多傳遞參數__init__

class BooError(Exception): 
    def __init__(self, *args): 
     super(BooError, self).__init__('Boo') 
+0

爲什麼不把它作爲超__init__的參數傳遞? – Alvaro

+0

或者,他可以做'super(BooError,self).__ init __('Boo')' –