ITPub博客

首页 > IT职业 > IT生活 > Android NDK学习笔记11-JNI异常处理

Android NDK学习笔记11-JNI异常处理

IT生活 作者:rorog 时间:2021-09-09 09:10:20 0 删除 编辑
捕获异常

JNIEnv接口提供了一组与异常相关的函数集,在运行过程中可以使用java类查看这些函数。

public class JavaClass{
// 抛出方法
private void throwingMethod() throws NullPointerException{
throw new NullPointerException("Null Pointer");
}
}

调用throwingMethod方法时,accessMethod原生方法需要显示地做异常处理。JNI提供了ExceptionOccurred函数查询虚拟机中是否有挂起的现象。例如,原生代码中的异常处理:

jthrowable ex;
……
(*env)->CallVoidMethod(env,instance,throwingMethodId);
ex = (*env)->ExceptionOccurred(env);
if(0 != ex){
(*env)->ExceptionClear(env);
/*Exception handler*/
}
抛出异常

JNI也允许原生代码抛出异常。因为异常是java类,应该先用FindClass函数找到异常类。用ThrowNew函数可以初始化且抛出新的异常,例如:

jclass clazz;
……
clazz = (*env)->FindClass(env,"java/lang/NullPointerException");
if(0 !=clazz){
(*env)->ThrowNew(env,clazz,"Exception message");
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2976/viewspace-2799829/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-12

  • 博文量
    90
  • 访问量
    575