5-1-exception异常分类及处理

文章目录
  1. 1. exception异常分类及处理
    1. 1.1. 类图
    2. 1.2. 分类(throwable超类)
      1. 1.2.1. 1 error(java内部错误和资源耗尽,应用不会抛出该类)
      2. 1.2.2. 2 exception(runtime, checked)
        1. 1.2.2.1. 2.1 运行时异常RuntimeException(null, classcast)【transactional只会回滚这些】
        2. 1.2.2.2. 2.2 检查CheckedException(发生在编译阶段,强制程序去捕获:io, sql)
    3. 1.3. 处理方式
      1. 1.3.1. 抛出(主动throw, 函数throws, 系统自动抛异常)
      2. 1.3.2. try catch
    4. 1.4. throw和throws区别
      1. 1.4.1. 1.位置不同
      2. 1.4.2. 2.功能不同
      3. 1.4.3. 两种都是消极处理,真正的处理异常由函数上层调用处理

exception异常分类及处理

类图

image-20210719111409154

分类(throwable超类)

1 error(java内部错误和资源耗尽,应用不会抛出该类)

2 exception(runtime, checked)

2.1 运行时异常RuntimeException(null, classcast)【transactional只会回滚这些】

如 : NullPointerException 、 ClassCastException ; RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现 RuntimeException,那么一定是程序员的错误。

2.2 检查CheckedException(发生在编译阶段,强制程序去捕获:io, sql)

一个是检查异常CheckedException,如 I/O 错误导致的 IOException、SQLException。

  1. 试图在文件尾部读取数据
  2. 试图打开一个错误格式的url
  3. 给定字符串找class对象,类不存在

处理方式

抛出(主动throw, 函数throws, 系统自动抛异常)

try catch

throw和throws区别

1.位置不同

  1. throws在函数, 后面是异常类,可以多个。
  2. throw在函数内,后面是异常对象。

2.功能不同

throws用来声明异常,让调用者知道该功能可能出现的问题,预先处理。异常不一定会发生。

throw是抛出具体问题,执行到throw,功能就已经结束了。执行throw则一定发生异常。

两种都是消极处理,真正的处理异常由函数上层调用处理