22

JNI を使用して C++ コードからその関数を呼び出すときに、Java 関数によってスローされた例外を特定したいと考えています。Java 例外をキャッチする次のコードがあります。

JNIEnv * pEnv; // assume this is properly initialized
jclass javaClass; // ditto
jmethodID javaFunction; // ditto
pEnv->CallStaticVoidMethod(javaClass, javaFunction);
jthrowable exc;
if(exc = pEnv->ExceptionOccurred())
{
    pEnv->ExceptionClear();
}

この C++ コード内の Java 例外に関する説明情報を取得する方法がわかりません。誰か助けてくれませんか?

4

3 に答える 3

0

これを回避する簡単な方法は、JNI メソッドを宣言して、考えられるすべての例外をスローすることです。次に、次のようにします。

jthrowable throwable = ExceptionOccurred(env);
if (throwable != NULL)
   Throw(env, throwable);

そしてあなたのJavaコードにそれを処理させてください。

于 2012-05-02T09:56:56.103 に答える