使用自定义消息的自定义python异常

时间:2014-01-15 18:58:22

标签: python exception

我希望我的自定义异常能够在引发时打印自定义消息。我得到了这种方法(简化):

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已被弃用。但我不知道自定义错误消息的正确方法是什么?

1 个答案:

答案 0 :(得分: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')