0

这个问题是参考的:

在没有 PyLint 抱怨的情况下在 Python 中定义异常的“正确”方法

就干净的代码而言,看起来定义异常的理想方法是:

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 中使用类,所以如果我在这里偏离基础,请原谅我,但处理这个问题的更好方法是使用非折旧.message方法定义您自己的基本异常,因为 Python 似乎有使用来自的问题BaseException?::

# Do this only once:
class MyBaseException(Exception):
    def __init__(self, message):
        super(MyBaseException, self).__init__(message)
        self.message = message

# Whenever you want to define a new exception:
class NewException(MyBaseException):
    pass
4

1 回答 1

1

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

try: 
   <some code>
except MyException as msg:
    <handle>
于 2012-10-21T23:14:43.667 回答