【问题标题】:Custom python Exception with custom message带有自定义消息的自定义 python 异常
【发布时间】:2014-02-04 10:13:09
【问题描述】:

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

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

【问题讨论】:

  • 结果在哪些方面不让你满意?你想要什么结果?
  • 也许在__init__ 方法的底部添加return self.message 语句?这可能是不好的风格,但可能会起作用:)
  • stackoverflow.com/questions/6180185/… 似乎包含您正在寻找的答案!

标签: python exception


【解决方案1】:

您还需要设置 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')

【讨论】:

  • 为什么不把它作为super init的参数传递呢?
  • 或者,他可以这样做super(BooError, self).__init__('Boo')
猜你喜欢
  • 2015-11-04
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多