일반적으로 Java 컴파일러는 throw 된 확인 된 예외가 모두 throw 사양에 있음을 확인합니다. 네이티브 함수가 기능 검사 예외 목록에없는 java checked 예외를 throw하거나 런타임에 무시되는 throw 사양 목록 일 경우 특별한 일이 발생합니까?Java 검사 예외가 함수의 throw 사양에 없습니다.
C++
void function(JNIEnv * env, jclass jc) {
jclass newExcCls = env->FindClass("java/lang/NullPointerException");
env->ThrowNew(newExcCls, "ERROR");
}
는 C++ 함수 이름이 아마 엉망이 될 것이다 (
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();
}
}
}
자바
. 또한의 loadLibrary이 시도 캐치에 있어야합니다. 상관 없어, 나는 믿지 않는다 문제가 될 수 있습니다. 코드에 다른 오류가있을 수 있지만 아마도 관련이 없습니다.)
나는 이것이 중복되지 않는 것에 다소 놀랐습니다. –