在我的实际案例中,Segmentation fault
条款中出现finally
,我无法做任何事情,因为它源于通过ctypes使用的外部库。实际上,我并不关心这个段错误,因为无论如何都要完成脚本。
但是,最终的段错误会在它之前发生所有异常。因此,从NameError
调试第一个iDontExist
会成为屁股的痛苦。它不会发生在任何地方。目前,在segfault之前无法看到任何引发的异常。
def f1():
try:
while True:
pass
except KeyboardInterrupt:
print iDontExist
if __name__=="__main__":
try:
f1()
finally:
raise Exception("segfault here")
print "finally"
您认为我能做些什么?修复外部库不是一种选择。
答案 0 :(得分:4)
您可以尝试在最终之前捕获异常:
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是对的:分段错误也不例外,所以你可能正在寻找别的东西。