gpt4 book ai didi

finally 子句中的 Python 异常会吃掉先前的异常

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:54 26 4
gpt4 key购买 nike

在我的真实案例中,finally 子句中出现了一个Segmentation fault,对此我无能为力,因为它源于通过 ctypes 使用的外部库。实际上,我不关心这个段错误,因为脚本无论如何都完成了。

但是,finally 中的段错误吞噬了之前发生的所有异常。因此,从 iDontExist 中调试第一个 NameError 变得很痛苦。它不会发生在任何地方。目前无法在段错误之前看到任何引发的异常。

def f1():
try:
while True:
pass
except KeyboardInterrupt:
print iDontExist

if __name__=="__main__":
try:
f1()
finally:
raise Exception("segfault here")
print "finally"

你认为我能做些什么?修复外部库不是一种选择。

最佳答案

您可以尝试在 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 是对的:段错误也不异常(exception),因此您可能正在寻找其他东西。

关于finally 子句中的 Python 异常会吃掉先前的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com