异常机制的本质就是当程序出现错误时,程序安全退出的机制 .
Java中所有的异常对象都是派生于Throwable类的在一个实例,我们先来看看具体的结构层次,对其有一个大概的认知.

Java异常处理机制

1、CheckedException是受查异常,是编译器需要处理的,会给我们报错
2、UnCheckedException是非受查异常,也就是运行时异常,在代码运行时才会报出异常
3、Error是程序无法处理的错误,一般是代码运行时的环境出现问题,我们不需要去管这个

Java是采用面向对象的方式类处理异常,
抛出异常:当虚拟机在执行某个方法的时候,如果这个方法发生异常,就会将这个方法封装成为一个对象,程序停止在当前的代码行,并且将这个对象抛给JRE
捕获异常:JRE获取到该异常对象之后,会寻找相应的代码来处理这个异常

运行时异常
我们常见的运行时异常有,算数异常(ArithmeticException)---->除数为0,空指针异常(NullPointerException)---->对象为空时去调用该对象的方法,数组下标越界异常(ArrayIndexOutOfBoundException)
非受查异常
这类异常就会在编译时报错,我们必须在编译时做出处理否则无法通过编译
我们处理的方式有两种“try/catch”捕获异常,使用“throws”来声明异常
try-catch-finally执行顺序:
首先程序会去执行try语句块,如果没有发生异常则会直接跳入到finally(通常是关闭程序块内打开的资源,例如:关闭对象流,释放数据库连接等等)语句块中执行,如果try语句块中出现异常,则中断执行并根据发生的的异常类型跳入与其对应的catch语句块中执行处理,catch执行完会继续执行finnaly语句块中的代码。

但是我们需要注意的是,

  • 如果异常已经处理完成不会回到try语句段中去执行未执行的代码
  • catch捕获的异常类型如果存在继承关系,先捕获子类在捕获父类
  • 倘若try和catch中都存在return语句,finally也会执行,是执行完finally之后再通过return返回
    自定义异常
    1、自定义异常的时候 需要自己定义一个类实现
    2、在抛出异常的时候 需要自己进行throw
    3、编译时期—>受查异常
    继承自 Exception 的异常默认是受查异常
    继承自 RuntimeException 的异常默认是非受查异常

相关文章: