【发布时间】:2012-05-21 12:08:40
【问题描述】:
从 Cython 调用时,我在处理自定义 C++ 异常时遇到了一些问题。
我的情况如下:我有一个使用CustomLibraryException 处理所有异常的库。我想要的基本上是得到错误消息并用它引发 Python 错误。
user guide 有一些提示,但有点不具体。 第一种可能是:
cdef int bar() 除了+ValueError
这会将CustomLibraryException 转换为ValueError,但会丢失错误消息。
另一种可能性是使用显式转换错误
cdef int raise_py_error()
cdef int something_dangerous() except +raise_py_error
我真的不明白这个解决方案。我知道 raise_py_error 必须是一个以某种方式处理错误的 C++ 函数。我不知道如何处理它。该函数没有参数,而是在 C++ 中的 catch 块内调用。
如果有人有在 Cython 中处理 C++ 异常的工作示例,那将有很大帮助。
【问题讨论】:
标签: c++ exception-handling cython