在Python中更改Exception类的默认处理

时间:2013-09-10 14:33:13

标签: python exception-handling

我有一个简单的问题,答案可能更复杂。

我在Python中编写了一个自定义的Exception类:

class MyError(Exception):
  def __init__(self, message, other_info):
    Exception.__init__(self, message)
    self.other_info = other_info

我想要做的是更改此异常的默认处理以包含other_info中的信息,但为了组织起见,我想将其保留在主要的Exception消息之外。

我看过一篇关于如何完全覆盖sys.excepthook的帖子,但我不想改变它的工作方式 - 我只是想改变处理MyError的方式。这可能吗?

1 个答案:

答案 0 :(得分:2)

我试图理解更改默认处理的含义,并猜测您希望异常消息显示self.other_info而不是self.message。如果是这种情况,请修改类以添加__str__函数:

class MyError(Exception):
    def __init__(self, msg, other_info):
        Exception.__init__(self, msg)
        self.other_info = other_info
    def __str__(self):
        return '<MyError: {}>'.format(self.other_info)
        # Or, simply:
        # return self.other_info