JNI的异常处理
JNIEXPORT void JNICALL Java_com_dongnao_alvin_Jni_1Test_exception
(JNIEnv * env, jobject jobj) {
jclass cls = (*env)->GetObjectClass(env, jobj);
jfieldID fid = (*env)->GetFieldID(env, cls, "key", "Ljava/lang/String;");
//检查是否发送异常
jthrowable ex = (*env)->ExceptionOccurred(env);
//判断异常是否发送
if(ex!=NULL) {
jclass newExc;
//清空JNI产生的异常,可以组织java层的崩溃
(*env)->ExceptionClear(env);
// 自己定义一个java层的Exception IllegalArgumentException
newExc = (*env)->FindClass(env,"java/lang/IllegalArgumentException");
if (newExc == NULL)
{
printf("exception\n");
return;
}
(*env)->ThrowNew(env, newExc, "Throw exception from JNI: GetFieldID faild ");
}
}
网友评论