python - 在 Python 中拦截模块范围内的特定异常

标签 python exception

我定义了一个自定义异常,我需要跟踪它并在抛出异常时触发一个进程。目前,我将容易引发该错误的每一行都包含在 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/

相关文章:

java - 在Java中,在抛出异常的方法中关闭变量的正确方法是什么?

python - 按 "space"pandas 拆分几列

python:循环的单线笛卡尔积

Python处理csv文件去除大于3字节的unicode字符

android - 将页脚添加到 ListView 引发 "cannot be cast to android.widget.HeaderViewListAdapter"

java - Spring Boot - 处理用 BindException 包装的异常

python - 如何填充图像边缘内的白色背景以去除背景?

python - Python 中数组的 2D 和 3D 散点直方图

c# - 如果我在 SqlConnection 的 using 语句中捕获异常,using 是否仍然处理关闭和处理我的连接?

我的函数中的 Oracle INVALID_NUMBER 异常不起作用