gpt4 book ai didi

java - JNI Throw 是否会中断方法执行?

转载 作者:行者123 更新时间:2023-12-03 23:06:40 28 4
gpt4 key购买 nike

当我调用 env->ThrowNew(clazz, "...") ,C++/C方法的后续执行会停止还是我必须自己停止?

// This is the method which checks if a class can be loaded.

static inline jclass _check_find_class(JNIEnv* env, char* name) {
jclass clazz = env->FindClass(name);

if (clazz == NULL) {
env->ThrowNew(env->FindClass("java/lang/NoClassDefFoundError"), message);
}

return clazz;
}

// This method is called in other functions like

jclass load_main_class(JNIEnv* env) {
auto clazz = _check_find_class(env, "class/which/cannot/be/loaded");

do_stuff(env, clazz);

return clazz;
}

当我调用 load_main_class 时会发生什么?方法,它无法找到类和 ThrowNew方法叫什么?

最佳答案

JNI 异常 does not immediately disrupt the native method execution .但是如果你没有正确处理这个异常,那么任何 JNI 函数调用(除了极少数被显式清除的函数调用)都会崩溃。

关于java - JNI Throw 是否会中断方法执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58363131/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com