在 Python 程序中,我的代码结构如下:
try:
value = my_function(*args)
finally:
with some_context_manager:
do_something()
if 'value' in locals():
do_something_else(value)
但是 locals() 中的 'value'
构造感觉有点脆弱,我想知道是否有更好的方法来做到这一点。
我真正想要的是 finally
中的代码根据 try
block 是否引发异常而表现得略有不同。有没有办法知道是否引发了异常?
最佳答案
如果目标是“当出现异常时,做一些不同的事情”,怎么样:
exception_raised = False
try:
value = my_function(*args)
except:
exception_raised = True
raise
finally:
with some_context_manager:
do_something()
if not exception_raised:
do_something_else(value)
现在,如果您要处理多个异常,我建议:
completed_successfully = False
try:
value = my_function(*args)
else:
completed_successfully = True
finally:
with some_context_manager:
do_something()
if completed_sucessfully:
do_something_else(value)
关于python - finally block 可以知道是否有异常吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43308702/