异常处理机制

概念

异常是指程序执行过程中可能出现的非正常情况,在 Java 中以类和对象的形式存在。Java 异常机制提高程序健壮性和容错性

  • 异常上抛机制
    指发生异常时,创建异常对象将其上抛给调用者,需要在方法声明位置上使用 throws 关键字
  • 异常捕捉机制
    指发生异常时,创建异常对象将其捕捉,需要在方法体内使用 try {} catch {} 语句块
  • 两者比较
    异常上抛不允许后续代码执行,异常捕捉允许

注意:如果一直上抛异常到 JVM 虚拟机,那么 JVM 会终止程序执行(main 方法不建议上抛)。

异常分类

java异常抛出方式不包括什么 java异常抛出机制_后端

  1. Error :不可处理的错误,直接退出 JVM 虚拟机
  2. Exception :可以处理的异常
  3. 编译时异常:编写程序阶段必须预先处理的异常,否则编译不通过
  4. 运行时异常:编写程序阶段即使不预先处理也能通过编译的异常

编译时异常 VS 运行时异常

  1. 相同点:都发生在运行阶段,异常机制实际上就是 new 异常对象,然后将其抛出,而 new 对象这一操作只能发生在运行阶段
  2. 不同点:编译时异常发生概率大,需要预处理;运行时异常发生概率小,不需要预处理。

异常对象常用方法

  1. exception.getMessage():获取异常简单的描述信息
  2. exception.printStackTrace():打印异常追踪的堆栈信息

相关关键字

  1. throw:表示在方法体中手动抛出一个异常对象
  2. throws:在方法声明中,表示此方法在被调用时必须处理异常
  3. try :不能单独出现,需要和 catch 或 finally 联合使用
  4. catch :内容可以是确切类型,也可以是其父类,可以写多个(遵循异常类型从小到大的顺序),编写时建议一个异常对应一个 catch 语句块(利于调试)
  5. finally :finally 语句块中的语句必定执行,通常用于释放或关闭资源

常见异常

NullPointerException:空指针异常

ClassCastException:类型转换异常

ArrayIndexOutOfBoundException:数组下标越界异常

NumberFormatException:数字格式化异常

ConcurrentModificationException:并发修改异常

InstantiationException:实例化异常

InterruptedException:中断异常

NotSerializableException:不可序列化异常

仅供参考,如有错误,感谢指正!