2012-11-01 52 views
7

我有一個問題,用Cython 0.17.1傳播C++異常用Cython - Python異常

我的函數拋出一個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++異常?

+0

你使用['除了+' (http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions)在'cdef'? – user4815162342

+0

是的,也許我應該張貼更多的代碼... – linello

+0

你真的確認了異常的C++側拋出?你也可以嘗試用'except RuntimeError'替換'Exception,e'和print'e'來查看是否引發了其他Python異常。 – user4815162342

回答