zoukankan      html  css  js  c++  java
  • Android JNI ,如何抛出异常

    在android的JNIHelp.h文件中声明四种可以向JVM抛异常的函数:

    1. int jniThrowException(JNIEnv* env, const char* className,const char* msg)
    2. int jniThrowNullPointerException(JNIEnv* env, char* msg)
    3. int jniThrowIOException(JNIEnv* env, int errnum)
    4. int jniThrowRuntimeException(JNIEnv* env, const char* msg)
    注意虽然 const char* className它是字符串,但是它是要传到中使用,所以它必须和某个类相对应的。
    另外注意,这里的抛异常函数并不是在抛异常的同时退出当前函数,而是在函数最终返回时,才真正的抛出异常。
    使用时记得添加头文件:

    #include <jni.h>
    #include <JNIHelp.h>
    #include <android_runtime/AndroidRuntime.h>

    static void
    android_media_MediaScanner_setLocale(JNIEnv *env, jobject thiz, jstring locale)
    {
        MediaScanner *mp = (MediaScanner *)env->GetIntField(thiz, fields.context);
    
        if (locale == NULL) {
            jniThrowException(env, "java/lang/IllegalArgumentException", NULL);
            return;
        }

  • 相关阅读:
    文章索引
    Rancher pipeline 实现简单跟踪
    rancher 应用商店
    nginx ingress 在aks 上安装
    go countdown
    go channel pipeline 套路
    gorm使用
    华为云cce pvc 指定云硬盘云存储
    influxdb 基本概念
    Python3处理xlsx去掉含有特定字符的行
  • 原文地址:https://www.cnblogs.com/zhouchanwen/p/3382520.html
Copyright © 2011-2022 走看看