跳转到主要内容

未提供项目描述

项目描述

描述

exgurd提供了一种装饰器,用于防止函数或方法抛出异常。这在执行不受信任的代码时非常有用,例如在框架中执行第三方模块时。

与Python 3中的suppress上下文管理器相比,exguard提供了更多控制异常处理的方法

  • 根据模块和命名空间过滤,以定义要捕获哪些异常,并保持其他代码中的异常不受影响

  • 捕获异常后执行回调函数

  • finally块中执行回调函数

例如,一个在Web应用程序中调用第三方模块代码的API方法可以通过这种方式防止这些模块中的异常,同时框架本身的异常将原样抛出

from exguard import guard, traceback_str

def throw_to_client(exception, module):
    tb = traceback_str(exception)

    # Do something to pass a traceback to the browser, disable the plugin,…
    pass

# All third-party modules are under one namespace
@guard(modules=["myframework.plugins"], submodules=True, fullstack=True, cb_except=throw_to_client)
def call_plugin_api():
    # An exception inside this will be caught
    myframework.plugins.evil.crash()

    # This will still raise an exception like normal
    x = 17 / 0

作者

exguard是作为Veripeditus的一部分开始的,主要由Eike Tim Jesinghaus <eike@naturalnet.de>创建。

变更日志

0.2.1

  • 防止对 <string> 或其他非模块帧进行保护。

0.2

  • 添加实用函数以获取完整的堆栈跟踪作为字符串。

  • 重新许可为MIT。

  • 较小的文档更新。

0.1

  • 首次发布。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码分发

exguard-0.2.1.tar.gz (4.1 kB 查看哈希值)

上传时间 源码

构建发行版

exguard-0.2.1-py3-none-any.whl (7.0 kB 查看哈希值)

上传时间 Python 3

支持者