13

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"

しかし、この例外は常に無視されます。Python から C++ の例外をキャッチするにはどうすればよいですか?

4

2 に答える 2

6

externで例外処理を宣言していますか?C ++例外処理について読む必要があります:http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptions

基本的に、次のようなことをする必要があります。

cdef extern from "some_file.h":
    cdef int foo() except +
于 2012-11-01T21:46:43.823 に答える
1

関数をとして宣言します。http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#exceptionsexcept +を参照してください。

于 2012-11-01T21:47:01.553 に答える