У меня есть такой метод:
extern "C"
JNIEXPORT jint JNICALL
Java_tt_reducto_ndksample_StringTypeOps_exception
(JNIEnv *env, jobject jobj) {
(env)->ExceptionClear();
jclass exception_cls = (env)->FindClass("java/lang/IllegalArgumentException");
(env)->ThrowNew(exception_cls, "key0 is not invalid");
return -1;
}
сработало. но если вернуть jstring следующим образом:
extern "C"
JNIEXPORT jstring JNICALL
Java_tt_reducto_ndksample_StringTypeOps_exception
(JNIEnv *env, jobject jobj) {
(env)->ExceptionClear();
jclass exception_cls = (env)->FindClass("java/lang/IllegalArgumentException");
(env)->ThrowNew(exception_cls, "key0 is not invalid");
return env->NewStringUTF("22");
}
, он был раздавлен.
JNI DETECTED ERROR IN APPLICATION: JNI ThrowNew called with pending exception java.lang.IllegalArgumentException: key0 is not invalid
я пытался поймать:
try {
StringTypeOps.exception()
}catch (e: java.lang.Exception) {
Log.d("::","Exception")
e.printStackTrace()
}
Я не уверен, что есть ограничения на использование функции ThrowNew ()