或者,也许您可以想到我正在尝试做的替代解决方案。基本上,我有一个包含一堆函数的类,我想将它们包装在 try/except 块中以拦截KeyboardInterrupt错误,因为我有一个函数可以整齐地清理我的每个函数。
我想我可以创建一个装饰器来做到这一点,而不是在每个函数中放置巨大的 try catch 块,但我遇到了一些问题。到目前为止,我有这样的事情
class MyClass:
def catch_interrupt(self, func):
def catcher():
try:
func()
except KeyboardInterrupt:
self.End()
return catcher
@catch_interrupt
def my_func(self):
# Start a long process that might need to be interrupted
def End(self):
# Cleans up things
sys.exit()
我运行它时的问题是我收到错误
TypeError: catch_interrupt() takes exactly 2 arguments (1 given)
这甚至可能吗?有没有更好的方法或者我真的应该在每个函数内部放置 try/except 块?