这是代码
ex_value = ''
try:
2/0
except ValueError as ex_value:
print(ex_value)
except ZeroDivisionError as ex_value:
print(ex_value)
finally:
print(ex_value)
这是终端打印
division by zero
Traceback (most recent call last):
File "C:\Users\Vasil\anaconda3\envs\AMZ\lib\site-packages\spyder_kernels\py3compat.py", line 356, in compat_exec
exec(code, globals, locals)
File "d:\onedrive\projects\chud_amaz\soft_in_dev\moduled_way_oop\code_questions\try_except_var_in_finally.py", line 15, in <module>
print(ex_value)
NameError: name 'ex_value' is not defined
如何最终打印消息以及为什么尝试删除我的ex_value变量。
正如@Danis 已经回答的那样,发生这种情况是因为在块结束时清除了块内创建的所有异常对象
try-except(并且还通过 ) 语句保存到变量中。as我不太明白为什么这可能是必要的,但原则上将异常对象存储在另一个变量中就足够了,然后可以从中输出它。
结论:
从文档:
所以你通过变量的名称调用错误,将错误的名称更改为另一个名称: