Java异常处理机制
来源:互联网 发布:南风知我意2百度云 编辑:程序博客网 时间:2024/06/16 00:41
1、Throwable类
Throwable: 有两个重要的子类:Exception(异常)和 Error(错误)
Error(错误):是程序无法处理的错误,一般与 JVM相关的问题。如Java虚拟机运行错误(Virtual MachineError),这些错误是不可查的。
比如:StackOverFlowError和OutofMemoryError
Exception(异常):是程序本身可以处理的异常。Exception 分为运行时异常和非运行时异常。RuntimeException 类表示“JVM 常用操作”引发的错误,一般是由程序逻辑错误引起的。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException、ClassNotFoundException、IllegalArgumentException。
注意:异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。
除了RuntimeException及其子类以外,其他的Exception类及其子类都属于可查异常。这种异常的特点是Java编译器会检查它,也就是说,当程序中可能出现这类异常,要么用try-catch语句捕获它,要么用throws子句声明抛出它,否则编译不会通过。
不可查异常:包括运行时异常(RuntimeException与其子类)和错误(Error)。
2、异常处理机制
(1)Try...catch...finally捕获
注意:1)一旦某个catch捕获到匹配的异常类型,将进入异常处理代码。一经处理结束,就意味着整个try-catch语句结束。其他的catch子句不再有匹配和捕获异常类型的机会。
2)catch()中的异常类型可以为多种异常类型,之间用|隔开,这种情况下,异常变量有隐式的final修饰,所以不能对其重新赋值,如:
Try{...}catch(IOException | SQLException e){
System....(e.print...)//OK
e=new ArithmeticException(“test”);// 捕获出现异常,final变量不允许重新赋值
}
3)Catch和finally是可选的,二者至少出现一个。
4)匹配异常应该先子类异常,再基类异常。
4)除非在try块或者匹配的catch中调用虚拟机退出方法,如:System.exit(),否则finally一定会执行,即时前两者里有return,也会执行,并且在return之前执行。
5)Java的垃圾回收器只回收堆中资源,不释放物理资源,所以很多物理资源的释放在finally中进行,比如关闭文件。
6)自动关闭资源的try块,try后跟一对括号,隐式包含了finally,不用包括catch和finally。
(2)Throws抛出异常
抛出的异常层层向上,直到main方法也不知如何处理,抛给jvm。
单线程是由main方法抛出,多线程由Thread.run抛出。
Throw是抛出一个异常实例,不是异常处理机制,如throw new MyException(“test”);
(3)当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。
3、自定义异常
class MyException extends Excetpion{ public MyException( String msg){ super(msg);}}。。。if(x<0) throw new MyException("例子")
4、其他
(1)多个方法协同处理异常,可以在catch(Exception e)块里throw new NewException(“新的异常”);
(2)异常链就是异常分层,底层数据库异常留给管理员,抛出定义的新异常给中间层,中间层也是如此,保留异常抛出新异常。
- java异常处理机制
- java异常处理机制
- java异常处理机制
- Java-异常处理机制
- java异常处理机制
- Java异常处理机制
- java 异常处理机制
- java异常处理机制
- Java异常处理机制
- Java异常处理机制
- JAVA异常处理机制
- Java异常处理机制
- Java异常处理机制
- Java异常处理机制
- Java异常处理机制
- Java异常处理机制
- JAVA异常处理机制
- Java异常处理机制
- CS:APP二进制炸弹phase5
- 详细介绍ORACLE sqlplus工具命令
- JavaWeb中POI导入和导出Excel、Map键值类型转换、时间格式化、对象赋值等常见工具类集锦
- Hadoop之旅(1)—单机与伪集群安装、简单经典案例
- 关于word office 失去焦点后无法使用鼠标(冲突)
- Java异常处理机制
- CGContext一些方法在swift2.3和swift3.0的一些区别
- Python语法第6讲:集合
- H5简单版祖玛游戏
- Mysql数据实时导入Hive
- C++ vector删除指定元素
- Java泛型:<? extends XXXX> 中的? 和 extends 的理解和使用实例
- CS:APP二进制炸弹phase6
- 一个php脚本占用了多少内存呢