2012-11-01 19 views
7

mam problem z Cython 0.17.1Propagowanie C++ wyjątek Cython - python wyjątek

Moja funkcja rzuca std::runtime_error jeśli plik nie istnieje, chciałbym propagować ten wyjątek w jakiś sposób do mojego Kod Cython.

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

iz Cython po prawej owijania funkcji:

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

ale ten wyjątek jest zawsze ignorowane, jak mogę złapać C++ wyjątki od Pythona?

+0

Użyłeś [ 'wyjątkiem +' ] (http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions) w twoim 'cdef'? – user4815162342

+0

tak, prawdopodobnie powinienem opublikować trochę więcej kodu ... – linello

+0

Czy jesteś absolutnie pewien, że wyjątek został zgłoszony po stronie C++? Możesz także spróbować zastąpić 'except RuntimeError'' z wyjątkiem Exception, e' i print 'e', aby zobaczyć, czy może jakiś inny wyjątek Pythona został podniesiony. – user4815162342

Odpowiedz