JNI方法笔记3 异常

JNI方法笔记3 异常

1.捕获异常

在C++中 通过ExceptionOccurred函数捕获异常

然后通过ExceptionClear显式清楚异常

jthrowable ex;
env->CallVoidMethod(instance, throwingMethodId);
ex = env->ExceptionOccurred();
if(ex != 0){
	env->ExceptionClear();
}

2.抛出异常

主要通过 env->ThrowNew(jclass , string); 函数抛出异常

例子

jclass clazz;
clazz = env->FindClass("full-package-path");

if (0 != clazz){
	env->ThrowNew(clazzm "Exception message.");
}

抛出异常并不会停止原生函数的执行,抛出异常时,原生函数应该释放所有已分配的原生资源。而通过JNIEnv接口获得的引用是局部引用,一旦返回原生函数,他们会自动被虚拟机释放。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值