在Python中定义自定义异常

时间:2012-10-21 23:08:04

标签: python exception-handling

这个问题参考:

The "correct" way to define an exception in Python without PyLint complaining

就清洁代码而言,看起来定义异常的理想方式是:

class MyException(Exception):
    pass

但是如引用的问题中所述,这会导致运行时警告:

DeprecationWarning: BaseException.message has been deprecated as of Python 2.6

接受的答案似乎是定义消息方法:

class MyException(Exception):
    def __init__(self, message):
        super(MyException, self).__init__(message)
        self.message = message

除了4个更麻烦的行和更少的可读行代码之外,最大的问题是你必须冗余地键入新异常的名称(MyException)两次。

我不经常在Python中使用类,所以请原谅我,如果我不在这里,但可能更好的方法来处理这个问题是用非折旧的{{1}来定义你自己的基本异常因为Python似乎在使用.message中的问题时出现问题? ::

BaseException

1 个答案:

答案 0 :(得分:1)

在您使用 MyException.message 的代码中的某处 您可以将其更改为

try: 
   <some code>
except MyException as msg:
    <handle>