在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框架迭代模块中的类和函数。用包装版本替换每个函数可能会很棘手。。。