文章目录
Java-异常
1 概念
异常就是错误的一种说法,是Java中提供的一种机制,有效的使用异常可以使我们的程序更加的健壮且易于调试
2 产生原因
1 用户输入非法的数据
2 要找的文件不存在
3 网络中断
4 内存溢出
如果不解决这些异常就会导致程序生命周期终止(错误代码之后的代码就不执行了)
3 处理方式
3.1 try…catch…
解决异常,一般用在客户端
3.1.1 用法一
3.1.2 用法二
try{
高风险代码;
}catch(异常类型 变量){
解决方案;
}catch(异常类型 变量){
解决方案;
}
1 多个catch从上到下必须是从子类到父类,否则会因为多态的原因把子类的异常对象也捕捉,导致子类异常永远执行不到
2 多个catch如果异常没有继承关系,也就无所谓顺序
3 多个catch只会有一个catch执行,最先出错的语句开始,try就终止了,所以只能报出一种错误
3.1.3 用法三
1.7开始,多个catch如果有些处理操作相同,可以使用|隔开,统一处理相同的操作
异常类型|异常类型|异常类型… 变量,多个异常类型中,不能有继承关系,如果碰到有继承关系的就直接写父类
3.1.4 用法四
3.2 throws
抛出异常,一般用于类库端(服务端),提醒调用出让他解决问题
3.2.1 用法一
throws多个异常也可以,用逗号隔开
public static void main(String[] args) throws Exception.FileNotFoundException,IOException
3.3 throw
异常源,创建一个异常的
3.4 finally语句块
必须执行的语句块
3.4.1 基本使用
有时候我们会碰到在程序出错的情况下某些代码必须要执行
比如 关闭资源,此时可把该代码放在finally语句中
1 finally 不能单独出现
2 可以和try一起使用
3 也可以和try…catch…一起使用
4 finally语句一定会执行,唯一一种不执行的情况就是System.exit()关闭虚拟机
3.5 自定义异常
异常也是一个类,只不过该类一般用于描述出现了某种错误
4 继承体系
Throwable是异常类的根类
直接子类:Exception和Error
Error;一般我们解决不了,比如栈内存溢出问题
Exception:运行时异常(RunTimeException)和编译时异常(检查时异常)
5 注意事项
6 更宽泛的异常
子类覆写的方法,抛出的异常,只能是父类抛出的异常或者是父类抛出的异常类的子类
小于等于关系