处理 Python 扩展模块中的致命错误

问题描述

Python 的 C API 是否有任何方法可以从 C 代码中的任意点直接返回到 Python 解释器,并在理想情况下引发异常?在内部,这可能会使用某种 longjmp。

用例:

这将用于处理由连接到 Python 的 C 库引发的致命错误(例如断言失败)。认情况下,对于此类致命错误,库 abort() 会终止 Python 解释器。我正在寻找一种在不终止 Python 的情况下处理这些错误的最后手段。

理想情况下,可以在调用 C 库之前执行 setjmp,但是,对于数百个将库连接到 Python 的手动编写的包装函数执行此操作目前是不可行的。 (正确的解决方案是使用接口生成器,它可以轻松地始终如一地自动插入 setjmp——但是,这是一个长期项目,现在我正在寻找一种快速改进的方法。 )

R 的 C API 提供了一个 error() 函数,该函数直接返回到 R 解释器并打印错误。 Python 的 C API 有什么可比的吗?

编辑:this 非常旧(~2001)包的存在表明它可能是可能的。很遗憾,该软件包不再可用,只有它的描述。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)