1异常机制
1.1 常见异常
1 空指针异常
2 下标越界异常
3 类型转换异常
4栈内存溢出
1.2 概述
异常发生原因
用户输入非法数据
文件底子不存在
网络通信中断
jvm内存溢出
大部分异常是用户引起的 有一部分是程序错误引起的 小部分是物理因素
1.3 异常分类
Throwable是所有异常跟错误的父类
分为 Error Excepotion 两个类
Exception 分为运行异常 跟io异常(又称为编译时异常)
运行异常是比较多的
1.4处理措施
try catch 处理异常 一般用于客户端
throws 抛出异常一般用于服务器
throw 异常源点
finally 必须执行的语句
1.5 Error
系统内部错误 这类错误由系统处理 我们不需要管
1.6 Exception
1.6.1 概述
Exception是所有异常的父类
分类如上
1.6.2 两个方法
这个方法一般用来让程序员排错
这个方法一般用来反馈给客户端
1.6.3 try catch
try{
高风险代码
* 1
* 2 如果这里出错的话 try结束 直接指向catch
* 3
* }
* catch(异常类型 变量){
* 出现异常时处理措施
* }
可以通过多个catch 做不同的异常处理
* 但是从上往下必须是从子类到父类 或者没有继承关系
* 因为如果上面是父类的话 会执行父类 不会执行子类
同时捕捉多个异常 并且多个异常类型直接使用 | 隔开 并且这些异常不可以有继承关系、
如果存在继承关系直接写父类异常
1.6.4 Throws
抛出异常 是一种提醒机制 并不会解决问题 该报错还是会报错 该终止生命周期还是会终止
* 当我们调用的方法抛出了异常 那么要么我们也抛出 要么我们try掉
* 如果知道这个问题怎么解决 就是try掉 如果不知道 就throws抛出去
* 服务端 使用throws 在客户端 使用trycatch
* 服务端 被调用 客户端 调用处
1.6.5 Finally
finally 必须执行的语句块 不能单独使用
* 必须和try 或者 try catch一起使用
* finally 只有一种不执行的情况 那就是JVM虚拟机终止System.exit(0);
1.6.6 1.7新特性
自动关闭资源
try(开启资源语句;){
高风险代码
}catch(异常类型 变量){
}
1.6.7 注意
方法覆写 不能比原方法有更宽泛的异常
子类方法抛出的异常 不能大于父类的异常
1.7 自定义异常类
创建一个异常类 继承已有异常
提供无参构造 带参构造
如果自定义异常类是运行时异常 继承RuntimeException即可
否则一般直接继承Exception
2 需求(跟设计有关)
2.1 设计图
分析
controller包里面的类 是实现前后端交互的 调用一些方法
service包里面的类 是逻辑处理
dao 是实现后端跟数据库的交互 只实现功能没有逻辑处理
util包里面的类是自己写的自定义异常 很常用 是一种提醒机制
pojo就是普通的java类