Java的容错机制
异常和错误都有相同的父类Throwable(Java的容错机制的父类)
1异常 Exception
程序在运行过程中出现的非正常事件(例如:除数为0)
异常:是程序级别的非正常事件,我们可以处理异常
异常的父类是Exception
异常的分类:
受检异常:IOException FileNotFoundException 等等
非受检异常:
前者一旦发生异常必须处理异常,后者可以处理也可以不处理
处理异常的关键字:
1 try
容易出现异常的代码放在try块中
在JDK1.7以前(1.0~6.0),不能单独使用,必须配合catch、finally一起使用
2 catch
抓住try块中出现的异常
一旦try块中出现了异常,后面的代码不会被执行,立马进入catch块
catch块职责:1抓住异常2处理异常
3 finally
不管是否发生异常都会执行的代码块,用来释放对象占用的内存。或者说清理对象占用的内存
场景:从控制台输入两个整数 ,如果除数为0处理异常 。最后释放对象占用的内存资源
finally在return之前执行
4 throw 抛出异常
该关键字只能在方法体中定义,一旦抛出了异常,调用该方法的地方必须处理异常
语法:
throw new 异常构造方法("");
作用:抛出异常
5 throws
该关键字只能在方法定义处使用,用于声明异常(该方法可能会发生异常)
作用:声明异常
2错误 Error
程序运行过程中JVM运行出现了故障
特征:不是程序级别,而是JVM级别,我们无法处理错误
如
OutOfMemoryError
StackOverflowError :栈内存溢出错误
try…with…resource
是JDK1.7的产物,你不用关闭资源,只要把关闭的资源告诉我(JVM),JVM帮你自动关闭,弱化了finally(不用编写finally)
语法:
try(
需要关闭的资源全部写在一对小括号中,JVM在运行的时候自动帮你创建finally,帮你执行资源的关闭
){
}catch(Exception e){
// 异常处理
}
3自定义异常
自己编写的异常叫做自定义异常。
很多软件公司都自己定义异常,好处:处理异常能加灵活
工作中的自定义异常有两种写法:1继承Exception类,2继承RuntimeException
异常小结:
1掌握5个关键字
2出现异常先抛出
3在最前沿处理异常
4出现异常一定要处理,catch块不能没有代码