I have a problem with Cython 0.17.1
My function throws a std::runtime_error
if a file doesn't exist, I'd like to propagate this exception in some manner to my Cython code.
void loadFile(const string &filename)
{
// some code, if filename doesn't exists
throw std::runtime_error( std::string("File doesn't exists" ) );
}
and from Cython after the right wrapping of the function:
try:
loadFile(myfilename)
except RuntimeError:
print "Can't load file"
but this exception is always ignored, how can I catch c++ exceptions from Python?
Are you declaring the exception handling with the extern? You should read about C++ exception handling: http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions
Basically, you need to do something like the following:
cdef extern from "some_file.h":
cdef int foo() except +
Declare your function as except +
, see http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With