异常操作
来源:互联网 发布:网络教育可以考研 编辑:程序博客网 时间:2024/06/05 19:48
这个JNIENV接口提供了一套与异常相关的函数。
public class JavaClass {
/**
* Throwing method.
*/
private void throwingMethod() throws NullPointerException {
throw new NullPointerException("Null pointer");
}
/**
* Access methods native method.
*/
private native void accessMethods();
}
这个accessMethods本地方法需要明确的做异常处理,当调用throwingMethod方法。这个JNI提供了ExceptionOccurred方法来查询虚拟机是否有异常。这个异常处理需要明确的使用ExceptionClear函数来清除它。
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.");
}
本地函数的代码执行并不在虚拟机的控制下,抛出一个异常并不会阻止本地函数的执行和把控制转到异常处理器。基于抛出的 异常,本地方法应该释放任何已经分配的本地资源,例如内存等。
- 异常操作
- android 数据库操作异常
- java-自定义异常操作
- ORACLE操作异常记录
- 操作码8:异常
- svn 操作异常总结
- NPOI操作excel异常
- 集合操作 异常处理
- 异常操作(解析文件)
- 数据库删除操作异常
- 异常和文件操作
- JAVA操作数组的异常
- IO操作 IO异常处理
- SVN操作异常解决日志
- list操作 出UnsupportedOperationException异常
- SVN操作异常解决日志
- Unity3d C#操作数据库异常
- greenplum的操作异常收集
- Subsequence
- 智能指针使用-share_ptr实例
- 各种电容的区别
- comet 关于ajax的反向技术 push
- 怎样搭建企业VPN
- 异常操作
- PKI系列标准
- linux内核设备驱动模型二之通用双向链表
- JAVA多线程和并发基础面试问答
- 线程私有数据介绍
- 【Linux】which命令
- VS2010下安装使用boost库
- Windows 2000下如何在自己的程序中实现关机!
- 无需注册码就可使用的PDF转换器