美文网首页
异常捕获

异常捕获

作者: 禅座 | 来源:发表于2019-06-14 13:49 被阅读0次

    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 ");
        }
    }
    

    相关文章

      网友评论

          本文标题:异常捕获

          本文链接:https://www.haomeiwen.com/subject/nezlxctx.html