目录
1.异常
2.Throwable
3.Error 和 Exception
4.异常处理关键字
5.自定义异常
1.异常
Java中的异常机制是基于面向对象的一种运行错误处理机制,Java把大部分可能存在的异常信息都封装在各自对应的类,所有这些异常类都继承自Throwable类,而Java中出现的异常都是对象。
一旦出现异常,运行的程序就会中断。
如果在程序代码中,有多个异常的存在时,程序代码执行遇到的第一个异常时,就会程序中断,程序只会报第一个异常信息。
2.Throwable
Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。
图 1 Throwbale类是继承了Object类,实现了Serialize接口(可序列化)
3.Error 和 Exception
Throwable类的两个子类是Error和Exception。
Error类及其子类会在Java程序运行中发生内部错误或导致内存资源不足时而被抛出,此时程序会被直接终止;
Exception类及其子类是通过异常捕获的方式对开发人员或程序重的错误进行提示,程序会继续执行,不会被终止。
| Error类被抛出时 | 一般是程序内部出现了较为严重的错误 |
| Exception类被抛出时 | 一般是程序出现了运行时异常和非运行异常 |
运行时异常 (非检查异常):小错误,代码写的问题,不符合代码逻辑
java.lang.ArithmeticException-算术异常
java.lang.NullPointerException-空指针异常
非运行异常(检查异常)执行代码之前需要检查 ,没有非运行异常,程序代码会存在
4.异常处理关键字
| throw throws | java中抛出异常使用的关键字时 throw和throws |
| try catch | java中通过try catch语句来捕获异常 |
| finally | 一般再try catch代码块后面都会紧跟着finally代码块, 通常情况下,无论程序是否异常,finally代码块都会正常运 |
| try块 | 用来判断运行的代码是否有异常 |
| catch块 | 如果有异常则执行catch块,没有异常不执行catch块的程序代码 |
| finally块 | 无论是否有异常,都会执行 |
catch(Exception e)
catch 写Exception的是,异常由级别低的异常到级别高的异常;
捕获异常: try - catch - finally (三个块可以嵌套使用的)
try - catch - finally(不是跳转语句)
注意:
1.不要在finally块中处理返回值
在finally代码块中使用return关键字时一定要慎重,finally代码块中的return返回值逻辑会直接覆盖try块代码块中正常的return返回值;
2.建议封装异常
3.针对不同的异常进行捕获
5.自定义异常
Java本身内置的大量异常类覆盖了大部分的编程异常场景,但是有时开发者需要自定义一些规则和异常情况。
自定义异常可以处理某些特殊的、超出期望的业务逻辑。



