C++ 传播c++;cython的异常-python异常
我对Cython 0.17.1有问题 我的函数抛出一个C++ 传播c++;cython的异常-python异常,c++,python,exception,try-catch,cython,C++,Python,Exception,Try Catch,Cython,我对Cython 0.17.1有问题 我的函数抛出一个std::runtime\u错误如果文件不存在,我想以某种方式将此异常传播到我的Cython代码中 void loadFile(const string &filename) { // some code, if filename doesn't exists throw std::runtime_error( std::string("File doesn't exists" ) ); } 在函数正确包装后,从C
std::runtime\u错误
如果文件不存在,我想以某种方式将此异常传播到我的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++异常?< /P> < P>你是用外部声明了异常处理吗?您应该阅读C++异常处理:
基本上,您需要执行以下操作:cdef extern from "some_file.h":
cdef int foo() except +
声明你的函数为“代码>”,除了+< />代码>,参见< /p>你在<代码> CDEF中使用吗?是的,也许我应该发布更多代码……你绝对肯定在C++方面抛出异常吗?您还可以尝试将
except RuntimeError
替换为Exception,e
并打印e
,以查看是否引发了其他Python异常。是的,我的函数声明了“except+”,但我仍然无法检测到异常。