通常、Javaコンパイラは、スローされたすべてのチェック例外がスロー仕様にあることを確認します。ネイティブ関数が、関数のスロー指定リストになかったJavaチェック例外をスローするとき、または実行時に単にスロー指定リストが無視されるときに特別なことが起こるか?関数のスロー指定にJavaチェック例外がありませんか?
C++
void function(JNIEnv * env, jclass jc) {
jclass newExcCls = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExcCls, "ERROR");
}
のJava
public class Tester {
static {
System.loadLibrary("MyLibrary");
}
private static native void function();
public static void main(String [ ] args) {
try {
function();
} catch(Exception e) { //is it caught? Or what happens?
e.printStackTrace();
}
}
}
(C++関数名はおそらく台無しされるだろう。また、LoadLibrary関数は、トライキャッチでなければなりません。気にしないでください、私はそれがだとは思いません問題に関連する。そこコード内の他のエラーはおそらくだが、彼らはどちらかおそらく関係ありませんね。)
私はちょっと重複していないことに驚いています。 –