异常
一.简介
1.异常
程序在运行中发生了意外的情况,称为出现异常,程序一旦出现异常,后面的代码无法执行,程序终止
为了保证后面的代码要正常执行,需要对异常做处理
2.异常分类
Throwable
Exception
FileNotFoundException 检查异常
ParseException
.....
RuntimeException 运行时异常
NullPointerException
ArrayIndexOutOfBoundsException
Error
分类:
检查异常:
- 继承了Exception
- 该异常是可预期,很有可能发生的
- 编译器要求必须显示的处理,编写代码时会要求强制处理
运行时异常:
- 继承了RuntimeException
- 该类异常不一定方式,如果代码没有出现逻辑错误,是不会发生的
- 编译器不要求去处理,写代码时可以不处理
Error:
- JVM和系统的错误,程序员无法处理的问题
二.异常处理
1.产生
每种异常都由一个java类来表示
-
当程序出现异常时,自动产生一个异常对象
-
寻找能够处理异常的代码 ---- 捕获异常
-
找不到可以捕获异常的代码,程序终止
2.处理
- 使用try…catch处理异常
- 使用throws抛出异常
2.1try …catch处理异常
try{
//可能会出现异常的代码
}catch(异常类型 异常对象名){
//对异常进行处理的语句
//当程序 发生异常时,会自动进入catch 代码块中
}finally{
//无论是否出现异常,都必须执行finally 代码块中的内容
}
注意:
try{ }不能单独存在,后面必须跟上 catch或者finally,catch可以有多个
2.2使用throws抛出
如果产生异常,可以不处理,将异常抛出,在该方法的调用者进行处理
使用throws 和throw关键词
- throws 用声明方法中会抛出的异常
- throw 用来在方法内部手动抛出异常
三.自定义异常
自定义一个异常类,需要继承Exception或者子类
- 继承Exception 则为检查异常,必须处理
- 继承RuntimeException 运行时异常,可以不处理
四.方法重写的异常问题
- 如果父类抛出异常,子类可以不抛出异常
- 如果父类不抛出异常,子类不能抛出检查异常,可以抛出运行时异常
- 重写的方法不能抛出范围更大的异常