异常学习总结

异常学习的总结

1.1 概念

异常的概念:java中将程序执行中的不正常情况称为异常,执行过程中的一场分为两大类。
一个是错误(ERROR):是执行时java虚拟机无法解决的重大问题。
一个是异常(Exception):执行时的一般性问题,分为编译时异常和运行时异常

 

 

1.2 异常体系图

 

 


是常出现的的异常继承及其实现关系

1.3 常见的异常总结

常见的运行时异常

  1. NullPointerException 空指针异常
  2. ArithmeticException 数学运算异常
  3. ArrayIndexOutOfBoundsException 数组下标越界异常
  4. ClassCastException 类型转换异常
  5. NumberFormatException 数字格式不正确异常[]

常见的编译时异常

  1. SQLException //操作数据库时,查询表可能发生异常
  2. IOException /操作文件时,发生的异常
  3. FileNotFoundException //当操作一个不存在的文件时,发生异常
  4. ClassNotFoundException //加载类,而该类不存在时,异常
  5. EOFException //操作文件,到文件末尾,发生异常
    IllegalArguementException //参数异常

1.4 异常处理的方式

  1. try-catch-finally
    程序员在代码中捕获异常自行处理
  2. throws
    将发生的异常抛出交给调用者来处理,最高级处理者就是jvm

处理机制示意图

try-catch-finally

 

 

throws

 

 

1.4.1 使用方法总结

try-catch-finally

  1. 如果异常发生了,那么异常后面的代码都不会执行,直接进入到catch块
  2. 异常没有发生那么就会顺序执行完代码,不会进入catch
    可以有多个catch语句捕获多个异常(进行不同的业务处理),要求父类一场在后,子类异常在前

throws

  1. 如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理。
  2. 在方法声明中用throws语句可以声明抛出异常的列表,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类。

1.5 自定义异常

概念:当程序中出现了某种错误,但是错误信息没有在Throwable子类中描述处理,这时候可以自己设计异常类,用于描述错误信息。

自定义异常步骤

  1. 定义类:自定义异常类名(程序员自己写)继承Exception或RuntimeException
  2. 如果继承Exception,属于编译异常
  3. 如果继承RuntimeException,属于运行异常(一般来说, 继承RuntimeException)

1.6 写程序时碰到的问题

在做一道练习题时,遇到了一个小问题

i最开始等于1
//简述问题
catch(){
return ++i;
} finally{
++i;
输出i值语句
}

catch中有return语句,但是还有finally块中又没有return语句,所以此时return语句不能马上执行。

经过查询,Java底层会创建一个临时变量temp保存 temp = 2
之后执行finally语句,++i,此时i = 3,然后输出i的值,最后会再执行return语句实际返回的是temp变量

posted @ 2022-07-22 16:28  AINIBYM  阅读(54)  评论(0)    收藏  举报