我定义了一个自定义异常,我需要跟踪它并在抛出异常时触发一个进程。目前,我将容易引发该错误的每一行都包含在 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
最佳答案
您可以通过使用 decorators 注释它们来拦截每个函数的异常。 。装饰器被实现为一个函数,它将函数作为输入并返回该函数的修改版本。在本例中,我们用 try/except block 包装输入函数:
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
关于python - 在 Python 中拦截模块范围内的特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227873/