引发自定义异常和输出



我有以下代码从教程:

class Ex(Exception):
def __init__(self,msg):
Exception.__init__(self,msg+msg)
self.args=(msg,)

try:
raise Ex('ex')
except Ex as e:
print(e)

问题是输出将是什么?我以为是exex。输出结果为ex。现在我不明白这个结构。在我看来,我可以忽略self.args=(msg,)。这无关紧要。我不明白的是Exception.__init__(self,msg+msg)这一行。我不太习惯例外。

调用Exception.__init__(self,msg+msg)时,调用msg+msg(在本例中,exex存储在args属性中)。通过在之后执行self.args=(msg,),您将覆盖之前对args属性的赋值。如果您想打印exex而不是ex,只需删除self.args=(msg,)

最新更新