异常

来源:互联网 发布:淘宝耐克正品店铺 贴吧 编辑:程序博客网 时间:2024/06/04 18:59

有些东西“食之无味,弃之可惜“,比如java中异常及其处理机制,所以,最终我还是选择了总结。

一、异常

1. 概念

异常:影响程序正常编译/运行的各种因素;

2. 关系

Java中的异常是分层的,且均继承自Throwable,继承图谱如下:

这里写图片描述

注意:黑框里均为运行时异常,蓝色框里为编译时异常;

3. Checked exception VS Unchecked exception

Checked exception:可查异常(编译时异常),除了RuntimeException及其子类外,其他Exception及其子类均为可查异常,编译器会检查此类异常,并且当程序中可能出现此类异常时,需用try…catch语句捕获或用throws子句声明抛出它;

Unchecked exception:不可查异常,包含运行时异常(RuntimeException)和错误(Error);

二、异常处理

java中的异常处理主要针对编译时异常,涉及到try…catch…finally及throw和throws,下面将分别展开说明:

1. try…catch…finally

关于这个处理链有许多细节可谈,比如异常捕获的范围,通常不建议直接捕获Exception,但是这里我要强调的是调用资源或创建连接时的关闭问题。当调用资源或创建连接时,一定要使用带资源的try语句或者在finally中关闭资源,否则可能导致内存泄漏,为什么会导致内存泄漏呢,这个就涉及到try语句的执行机制和垃圾回收的问题了。因为如果你在try语句中关闭资源,将可能因异常而无法执行关闭资源的操作,JVM将无法判定资源能否回收,资源将永久存在堆内存中,进而导致内存泄漏问题;

2. throw VS throws

throw: 用于在方法中抛出异常;
throws:用于在方法头中抛出异常;

三、参考

java中5种常见的异常(Exception)

原创粉丝点击