在Python中截取特定的异常模块范围
我已经定义了一个自定义异常,我需要随时跟踪并触发抛出的进程。目前,我将容易引发该错误的每一行放在在Python中截取特定的异常模块范围,python,exception,exception-handling,Python,Exception,Exception Handling,我已经定义了一个自定义异常,我需要随时跟踪并触发抛出的进程。目前,我将容易引发该错误的每一行放在try-对中,除了之外,但随着代码的增长,这看起来越来越难看和麻烦 除了语句外,是否有办法使模块范围内的尝试- tl;dr 我目前正在这样做: class MyError(exception): pass try: #error-prone code except MyError: context_aware_function() 我正在寻找这个: class MyError(
try
-对中,除了
之外,但随着代码的增长,这看起来越来越难看和麻烦
除了语句外,是否有办法使模块范围内的尝试
-
tl;dr
我目前正在这样做:
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
您可以通过使用注释来拦截每个函数的异常。decorator被实现为一个函数,它接受一个函数作为输入,并返回该函数的修改版本。在本例中,我们使用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
好策略。结合所有函数的自动装饰,这可能是一个很好的解决方案,但不幸的是,我的函数隐藏在对象中,因此我确实需要一个模块范围的重定向。您可以使用python框架迭代模块中的类和函数。用包装版本替换每个函数可能会很棘手。。。