我已经定义了一个自定义异常,我需要跟踪它并在每次抛出时触发一个进程。目前,我将每行容易在try
- except
对中引发错误,但随着代码的增长,这看起来越来越难看和繁琐。
有没有办法制作模块范围的try
- except
声明?
TL;博士
我目前正在这样做:
class MyError(exception):
pass
try:
#error-prone code
except MyError:
context_aware_function()
我正在寻找这个:
class MyError(exception):
pass
errorManager.redirect(from=MyError,to=context_aware_operation)
#error-prone code
答案 0 :(得分:2)
您可以通过使用decorators对其进行注释来拦截每个函数的异常。装饰器实现为一个函数,它将函数作为输入并返回函数的修改版本。在这种情况下,我们用try / except块包装输入函数:
def catch_error(function):
def wrapper(*args, **kws):
try:
return function(*args, **kws)
except MyError:
#handle error
return wrapper
@catch_error
def foo():
#error-prone code