韩顺平java基础-12-异常

发布时间 2024-01-10 11:14:56作者: 森森森。。。

韩顺平java基础-12-异常

异常

基本概念

语法错误、逻辑错误不属于异常,区分语法错误、逻辑错误与异常的区别

分类

  1. Error:指编译器无法处理解决的错误,可能是语法错误、逻辑错误。
  2. Exception:编译时异常、运行时异常

**异常体系图 **

异常分为运行时异常与编译时异常

  1. 运行时异常,编译器检查不出来,一般是编程时的逻辑错误。可以不做处理
  2. 编译时异常,是编译器要求必须处理的异常。

常见运行时异常

  1. NullPointerException 空指针异常

在需要使用对象时,对象为空

  1. ArithmeticException 数学运算异常

数字运算时发生异常,如除法中,除数为0

  1. ArrayIndexOutOfBoundsException 数组下标越界异常

数组越界,如遍历数组时,超出数组范围

  1. ClassCastException 类型转换异常

类型转换时发生异常,如向下转型,编译类型与运行类型不匹配

  1. NumberFormatException 数字格式不正确异常

如字符串转换成整数类型发生异常


编译异常

在编译时就必须处理的异常


异常处理-机制

  1. try-catch-finally
 try{

代码//可能出现异常}

catch(Exception e){

//捕获异常后处理(若没有异常发生,则不会执行)}

finally{

//不管是否发生异常,始终要执行finally

//通常放入释放资源的代码}
  1. throws

抛出异常至上一级,->jvm虚拟机:输出异常信息、退出程序

若没有任何处理,默认使用throws处理异常


异常处理细节

  1. 如果可能有多个异常,可以使用多catch语法,分别捕获具体的异常,要求子类异常在前,父类异常在后。
  2. 可以使用try-finally 异常仍然会使程序崩溃,但依然会执行finally
  3. 没有出现异常,则执行try中所有语句,catch将不再执行,如果有finally,最后执行finally
  4. 出现异常,try剩余语句不再执行,执行catch语句,若有finally,还要执行finally语句