从 Cython 调用时,我在处理自定义 C++ 异常时遇到了一些麻烦。我的情况如下:我有一个CustomLibraryException
用于所有异常的库。我想要的基本上是得到错误消息并用它引发 Python 错误。
用户指南有一些提示,但有点不具体。第一种可能性是:
cdef int bar() 除了 +ValueError
这会将 转换CustomLibraryException
为 a ValueError
,但会丢失错误消息。
另一种可能性是使用显式转换错误
cdef int raise_py_error()
cdef int something_dangerous() except +raise_py_error
我真的不明白这个解决方案。我知道 raise_py_error 必须是一个以某种方式处理错误的 C++ 函数。我不知道如何处理它。该函数没有参数,而是catch
在 C++ 的块内调用。
如果有人有在 Cython 中处理 C++ 异常的工作示例,那将有很大帮助。