-1
class MyException(Exception):
def __str__(self):
return self.args[0]
def DoWork():
raise MyException("My hoverboard is full of eels")
pass
if __name__ == '__main__':
try:
DoWork()
except MyException as ex:
print("This will get printed: " + str(ex)) #Line1
print("This will not get printed and will raise exception: " + ex) #Line2
为什么异常需要,如图2号线在1号线在理想情况下它应该工作的一个显式转换。 注:我已经尝试了两种 - 从MyException类删除str,并添加str;他们都没有工作。 请帮忙。Python3:为什么异常需要显式转换而打印的消息
那么为什么打印(EX)的作品?即使是使用隐式转换。 – AshishTheDev
'print()'不使用隐式转换,它将一个对象作为它的参数(确保它最终调用'__str__'或'__repr__',但这不是真正相关的)。 'x + y'调用'x .__ add __(y)',当'x'是'str','y'需要'str'或者你会得到一个异常。如果你真的希望'str + MyType'正常工作,你可以在'MyType'中实现'__add__'和'__radd__',并使它们与'str'参数一起工作,但这太可怕了。 – verdesmarald