Распространение исключения 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"

но это исключение всегда игнорируется, как я могу поймать исключения C ++ из Python?

8

Решение

Вы объявляете обработку исключений с помощью extern? Вы должны прочитать об обработке исключений в C ++: http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions

По сути, вам нужно сделать что-то вроде следующего:

cdef extern from "some_file.h":
cdef int foo() except +
2

Другие решения

Объявите вашу функцию как except +, увидеть http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions

1

По вопросам рекламы [email protected]