91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JNI捕獲異常

發布時間:2020-07-20 23:27:52 來源:網絡 閱讀:944 作者:slaron 欄目:移動開發

jnihelp.h頭文件根據需求自行添加,也可以直接刪除

#define LOG_TAG "JNIHelp"
#include "JNIHelp.h"
#include "android/log.h"
#include <string.h>
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>


static void getExceptionSummary(JNIEnv* env, jthrowable exception, char* buf, size_t bufLen)
{
    int success = 0;

    /* get the name of the exception's class */
    jclass exceptionClazz = env->GetObjectClass(exception); // can't fail
    jclass classClazz = env->GetObjectClass(exceptionClazz); // java.lang.Class, can't fail
    jmethodID classGetNameMethod = env->GetMethodID(classClazz, "getName", "()Ljava/lang/String;");
    jstring classNameStr = static_cast<jstring>(env->CallObjectMethod(exceptionClazz, classGetNameMethod));
    if (classNameStr != NULL) {
        /* get printable string */
        const char* classNameChars = env->GetStringUTFChars( classNameStr, NULL);
        if (classNameChars != NULL) {
            /* if the exception has a message string, get that */
            jmethodID throwableGetMessageMethod = env->GetMethodID(
                    exceptionClazz, "getMessage", "()Ljava/lang/String;");
            jstring messageStr = static_cast<jstring>(env->CallObjectMethod(exception, throwableGetMessageMethod));

            if (messageStr != NULL) {
                const char* messageChars = env->GetStringUTFChars( messageStr, NULL);
                if (messageChars != NULL) {
                    snprintf(buf, bufLen, "%s: %s", classNameChars, messageChars);
                    env->ReleaseStringUTFChars( messageStr, messageChars);
                } else {
                    env->ExceptionClear(); // clear OOM
                    snprintf(buf, bufLen, "%s: <error getting message>", classNameChars);
                }
                env->DeleteLocalRef( messageStr);
            } else {
                strncpy(buf, classNameChars, bufLen);
                buf[bufLen - 1] = '\0';
            }

            env->ReleaseStringUTFChars( classNameStr, classNameChars);
            success = 1;
        }
        env->DeleteLocalRef( classNameStr);
    }
    env->DeleteLocalRef( classClazz);
    env->DeleteLocalRef( exceptionClazz);

    if (! success) {
        env->ExceptionClear();
        snprintf(buf, bufLen, "%s", "<error getting class name>");
    }
}
/* Throw an exception with the specified class and an optional message.*/
int jniThrowException(JNIEnv* env)
{
     jclass exceptionClass;
     int result = 0;

     if (env->ExceptionCheck()) {
         /* TODO: consider creating the new exception with this as "cause" */
         char buf[256];

         jthrowable exception = env->ExceptionOccurred();
         env->ExceptionClear();
         if (exception != NULL) {
             getExceptionSummary(env,exception, buf, sizeof(buf));
             //LOGW("Discarding pending exception (%s) to throw %s\n", buf, className);
             __android_log_print(ANDROID_LOG_INFO, "", "Discarding pending exception (%s) to throw\n",buf);
             env->DeleteLocalRef(exception);
             result = -1;
         }
     }
     return result;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇礼县| 广灵县| 交城县| 剑河县| 仙游县| 临沂市| 通州区| 潮安县| 无棣县| 隆化县| 南乐县| 乌拉特中旗| 张家港市| 泗阳县| 景泰县| 札达县| 图片| 山西省| 金溪县| 龙山县| 会宁县| 河北区| 姜堰市| 邹平县| 济南市| 郑州市| 阿拉善左旗| 达州市| 宾阳县| 佛冈县| 闸北区| 迁安市| 尖扎县| 河源市| 石河子市| 田东县| 磴口县| 兴海县| 公主岭市| 开远市| 敦化市|