异常
(1)什么是异常:
- 程序在编译/执行的过程中可能出现的问题
- 注意:语法错误不属于异常
(2)为什么要学习异常:
- 异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机而终止
- 研究异常并且避免异常,然后提前处理异常,体现的是程序的安全, 健壮性。
(3)异常体系
(4)编译/运行时异常原理
(5)运行时异常,处理机制:
1.运行时异常:
- 直接继承自RuntimeException或者其子类,编译阶段不会报错,运行时可能出现的错误。
- (一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误,自己的水平有问题)
2.运行时异常示例:
- 数组索引越界异常: ArrayIndexOutOfBoundsException
- 空指针异常 : NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
- 数学操作异常:ArithmeticException
- 类型转换异常:ClassCastException
- 数字转换异常: NumberFormatException
3.处理机制:
- 运行时异常编译阶段不会出错,是运行时才可能出错的,所以编译阶段不处理也可以。
- 按照规范建议还是处理:建议在最外层调用处集中捕获处理即可。
(6)编译时异常,处理机制:
1.编译时异常:
- 不是RuntimeException或者其子类的异常(继承自Exception的异常或者其子类
),编译阶就报错,必须处理,否则代码不通过。
2.处理机制:
- 1.出现异常直接抛出去给调用者,调用者也继续抛出去。
- 2.出现异常自己捕获处理,不麻烦别人。
- 3.前两者结合,出现异常直接抛出去给调用者,调用者捕获处理。
(7)自定义异常:
1.自定义异常的必要性:
2.自定义异常的好处:
3. 自定义编译异常:
4.自定义运行异常:
IO流资源释放
(1)try-catch-finally
(2)try-with-resource