今日学习目标:
- 异常的概述
- 异常的分类
- 异常的处理方式
- 自定义异常
- 日志框架
-
1 异常
1.1 什么是异常?
异常就是报错,程序在执行过程中,数据导致程序不正常,导致了JVM非正常停止
- 之前的空指针异常,类型转换异常还有索引越界都属于异常的一种
程序产生异常时,在异常初创建了一个该异常的对象,该对象携带了相关的异常信息,
1.2 异常的分类
编译时期异常
- 非RuntimeException及其子类:就是编译时期出现的异常,编译时期必须处理,不然无法执行
运行时期异常
把异常的类型 , 原因 , 位置打印在控制台
- 程序停止执行
-
2.2 手动处理异常方式
声明异常—— throws
- 修饰符 返回值类型 方法名(参数列表) throws 异常类型1 , 异常的类型2... { ... }
- 作用 :
- 调用此方法表示这里可能会出现这种异常,提醒效果
- 如果没有出现异常也不影响程序执行
- 如果出现了异常,会把异常交给本方法的调用者处理(甩锅)
抛出异常—— throw
- 修饰符 返回值类型 方法名(参数列表) { throw new 异常对象();}- 抛出异常的格式必须在方法的内部完成- 抛出异常可以中断方法,抛出异常下面代码无法执行
throws:
- 在方法声明后面方法体大括号前面,跟的是异常类名
- 表示声明异常,告知调用者调用该方法有可能会出现这样的异常
throw:
捕获处理异常介绍 : try, catch;
- 捕获处理是本方法内部进行处理,能够阻止异常的传递,从而保证程序能够往下执行.
捕获异常的格式
try {try中存放可能会出现问题的代码1.代码...2.代码...3.代码...} catch (异常类型 变量名) {4.处理异常方案打印异常,获取异常原因记录日志......)}
执行方式
- 如果 try 中没有遇到问题,catch中的不执行
- 如果 try 中代码2遇到了问题,下面的代码不会执行,会拿当前异常对象和异常类型匹配,匹配成功执行处理异常代码
- 如果出现的问题没有被捕获,虚拟机处理
- 多异常捕获处理方案
- 多个异常,每个异常单独处理 ```java try{ 异常1 }catch(异常1){
} try{ 异常2 }catch(异常2){
}
- 多个异常,一次捕获,多次处理```javatry{异常1异常2}catch(异常1){}catch(异常2){}
- 多个异常,异常一次捕获,一次处理
try{异常1异常2}catch(Exception e){}
2.5 Throwable 的成员方法
| 方法名 | 说明 | | —- | —- | | public String getMessage() | 返回此 throwable 的详细消息字符串 | | public String toString() | 返回此可抛出的简短描述 | | public void printStackTrace() | 把异常的错误信息输出在控制台 |
3 自定义异常
3.1 概述
当JDK中的异常类型,不满足实际的业务需要时。就可以自己定义异常。例如,学生的年龄数据,如果是负数或者数据 超过了150认为是不合法的,就需要抛出异常。JDK中就没有表示年龄的异常,就需要自己定义异常了
