我想利用一个习惯系统例外钩. 当程序抛出异常时系统除外胡克接到电话做了些事情。你知道吗
示例:
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中的活动异常,这样它就不会导致程序退出?你知道吗
不可以。在调用
sys.excepthook
时,异常在顶层已经未捕获,程序将在sys.excepthook
完成其工作后退出。(请参见the documentation)一般来说,异常在Python中是不可恢复的:您必须在捕获它们的地方处理它们,不能从它们发生的地方继续。请参阅this thread了解一些讨论。你知道吗编辑:根据您的评论,听起来您并不是在试图捕获整个程序中的所有异常。您只需要捕捉某些对象上未定义的属性查找。如果是这样,只需在类上定义一个^{} 。你知道吗
相关问题 更多 >
编程相关推荐