Java异常处理 - 掘金
异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误。比如使用空的引用、数组下标越界、内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图。错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的。假若程序在运行期间出现了错误,如果置之不理,程序便会终止或直接导致系统崩溃,显然这不是我们希望看到的结果。因此,如何对运行期间出现的错误进行处理和补救呢?Java提供了异常机制来进行处理,通过异常机制来处理程序运行期间出现的错误。通过异常机制,我们可以更好地提升程序的健壮性。
异常和错误:
异常:程序执行中发生的不正常的情况,是可以避免的- 编程出现的逻辑错误
- 偶然的外在因素
错误:错误是不可以避免的JVM无法解决的严重问题
异常的体系结构:
Throwable接口Error类Exception类RuntimeException非运行时异常

异常的处理方式:
try-catch-finally直接对异常进行处理try-catch-finally的结构是可以相互嵌套的finally中是一定会执行的代码。- 用于捕获异常的时候,是可选的,不一定非要有
- 一般在
finally中进行一些关闭连接或者关闭输入输出流等释放资源的操作
- 执行过程中,一旦出现了异常,就会生成一个异常类对象,并到
catch中进行异常的处理 catch中的常见操作getMessage获取异常的提示信息printStackTrace打印堆栈的信息
- 在
try中声明的变量不可以在代码块外面使用- 解决方法:提升一个等级,在代码块外面声明变量,但不进行初始化
- 体现了隔离性
try-catch-finally的结构可以互相嵌套
throws + 异常类型将异常抛出,交由别人来进行捕获处理throws只是将异常抛出,但是没有进行处理- 具体对异常的处理,是由调用此部分结构的上级进行捕获处理的

自定义异常类
- Java支持用户自定义异常类
- 自定义异常类,首先要继承
Exception或者RuntimeException - 提供序列化编号:
serialVersionUID,用于对异常类的唯一标识 - 在类中提供重载的构造器
- 一般可以重写的方法:
- 构造器
(Exception类中)
toString()(Object类中)
- 构造器
