jmethodID mid = env->GetMethodID(cls, 「f」, 「(ILjava/lang/String;)D」);
jdouble result = env->CallDoubleMethod(obj, mid, 10, str);
JNI 不會檢查編程錯誤,例如傳遞null指針或者非法的類型參數。 非法的類型參數包括使用普通對象代替類對象,JNI不檢查這些錯誤的緣由是:java
JNI容許本地方法拋出java 異常。本地方法也能夠處理java 異常以外的異常。沒有處理的java 異常會返回到VM。程序員
ArrayIndexOutOfBoundsException
或者
ArrayStoreException
.在本地方法中有兩種方式能夠處理異常:編程
ExceptionOccurred() ExceptionDescribe() ExceptionClear() ExceptionCheck() ReleaseStringChars() ReleaseStringUTFChars() ReleaseStringCritical() Release<Type>ArrayElements() ReleasePrimitiveArrayCritical() DeleteLocalRef() DeleteGlobalRef() DeleteWeakGlobalRef() MonitorExit() PushLocalFrame() PopLocalFrame()