finally子句中的Python异常会吃掉之前的异常
作者:互联网
在我的实际情况下,finally子句出现了Segmentation错误,我对此无能为力,因为它源自通过ctypes使用的外部库.实际上,我不关心此段错误,因为脚本还是已完成.
但是,finally中的段错误会吞噬之前发生的所有异常.因此,从iDontExist调试该第一个NameError变得麻烦.它不会在任何地方发生.当前,无法从segfault之前看到任何引发的异常.
def f1():
try:
while True:
pass
except KeyboardInterrupt:
print iDontExist
if __name__=="__main__":
try:
f1()
finally:
raise Exception("segfault here")
print "finally"
您认为我能做些什么?修复外部库不是一种选择.
解决方法:
您可以尝试在最终之前捕获异常:
try:
f1()
except NameError as error: # Change as needed
print "Error caught:", error # Or simply "raise", in order to raise the error caught
finally:
raise Exception("segfault here")
print "finally"
也就是说,abamert是正确的:细分错误也不例外,因此您可能正在寻找其他东西.
标签:try-finally,exception,try-except,finally,python 来源: https://codeday.me/bug/20191031/1973984.html