是否可以取消尚未捕获的异常?

2024-04-25 21:57:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想利用一个习惯系统例外钩. 当程序抛出异常时系统除外胡克接到电话做了些事情。你知道吗

示例:

import sys
def ehook(exctype, value, traceback):
    t = 'Keys'
    if exctype == AttributeError and value.args[0].split("'")[1] == t:
        print "t %s" % (t,)
    else:
        sys.__excepthook__(exctype, value, traceback)

sys.excepthook = ehook



class Keys():
    @staticmethod
    def x():
        print "this is Keys.x()"


if __name__ == "__main__":
    Keys.x()
    Keys.noexist()
    print "I want to continue here and beyond..."

有没有办法取消excepthook中的活动异常,这样它就不会导致程序退出?你知道吗


Tags: and程序利用ifvalue系统defsys
1条回答
网友
1楼 · 发布于 2024-04-25 21:57:26

不可以。在调用sys.excepthook时,异常在顶层已经未捕获,程序将在sys.excepthook完成其工作后退出。(请参见the documentation)一般来说,异常在Python中是不可恢复的:您必须在捕获它们的地方处理它们,不能从它们发生的地方继续。请参阅this thread了解一些讨论。你知道吗

编辑:根据您的评论,听起来您并不是在试图捕获整个程序中的所有异常。您只需要捕捉某些对象上未定义的属性查找。如果是这样,只需在类上定义一个^{}。你知道吗

相关问题 更多 >