传播c例外的cython – python异常

我有一个Cython 0.17.1的问题

如果文件不存在,我的函数会抛出一个std :: runtime_error,我想以某种方式将这个异常传播给我的Cython代码.

void loadFile(const string &filename)
{
    // some code, if filename doesn't exists 
    throw std::runtime_error( std::string("File doesn't exists" ) );
}

在正确包装函数后从Cython:

try:
    loadFile(myfilename)
except RuntimeError:
    print "Can't load file"

但是这个异常总是被忽略,我如何从Python中捕获c异常?

你是否用extern声明异常处理?您应该阅读有关C异常处理: http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions

基本上,您需要执行以下操作:

cdef extern from "some_file.h":
    cdef int foo() except +
相关文章
相关标签/搜索