Cython から呼び出すときに、カスタム C++ 例外の処理に問題があります。私の状況は次のとおりですCustomLibraryException
。すべての例外を使用するライブラリがあります。私が欲しいのは、基本的にエラーメッセージを取得し、それで Python エラーを発生させることです。
ユーザーガイドにはいくつかのヒントがありますが、少し具体的ではありません. 最初の可能性は次のとおりです。
+ValueError 以外の cdef int bar()
これは を に変換しCustomLibraryException
ますValueError
が、エラー メッセージは失われます。
もう1つの可能性は、明示的にエラーを変換することです
cdef int raise_py_error()
cdef int something_dangerous() except +raise_py_error
私はこの解決策を本当に理解していません。raise_py_error は、何らかの方法でエラーを処理する C++ 関数でなければならないことを理解しました。私はそれを処理する方法がわかりません。関数は引数を取得せずcatch
、C++ のブロック内で呼び出されます。
Cython で C++ 例外を処理する実際の例があれば、非常に役立ちます。