在Python中向异常添加数据

在Python中向异常添加数据,python,exception,Python,Exception,我正在尝试创建一个异常,该异常包含典型字符串和一段附加数据: class MyException(RuntimeError): def __init__(self,numb): self.numb = numb try: raise MyException("My bad", 3) except MyException as me: print(me) 当我运行上面的程序时,我得到一个明显的抱怨,我在\uuuu init\uuuu中只有两个参数,但我通

我正在尝试创建一个异常,该异常包含典型字符串和一段附加数据:

class MyException(RuntimeError):
    def __init__(self,numb):
        self.numb = numb

try:
    raise MyException("My bad", 3)
except MyException as me:
    print(me)

当我运行上面的程序时,我得到一个明显的抱怨,我在
\uuuu init\uuuu
中只有两个参数,但我通过了三个。我不知道如何将典型字符串放入异常并添加数据。

您可以将第一个参数(
arg1
)传递到父异常的构造函数中,然后对第二个参数执行所需操作

class MyException(RuntimeError):
    def __init__(self, arg1, arg2):
        super().__init__(arg1)
        print("Second argument is " + arg2)

注意-如果使用Python 2,对
super()
的调用将替换为
super(MyException,self)

基于上述答案的更新代码如下所示:

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

try:
    raise MyException("My bad", 3)
except MyException as me:
    print(me)
    print(me.numb)
它输出

    My bad
    3

他准确地展示了他想对第二个参数做什么:保存它以备将来使用。(在本例中,它可以作为
me.numb
)您实际上可以将它放在原始问题下面的分隔符下面,如:------UPDATE------PS-很高兴它能工作,我没有实际测试它,并且认为它有一个typo@AdamHughes我想知道,但在我看来,在这个问题下看到答案会让人困惑。我以为他们会停止阅读。