01 jdk1.7异常的处理方式
不需要手动关闭流 因为会自动关闭流
因为FileInputStream 和FileOutPutStream都实现了AutoCloseable接口
这个接口中的close()方法具有自动关闭的功能
想要具有自动关系的功能 , 格式必须按照下面的格式写
02 模仿自动关闭流
实现AutoCloseable接口 重写close()方法
按照格式写好流操作
执行 ,就会发现close()方法会自动执行
输出
这里是流操作
这里关闭流
01 try{…} catch(){…}
cathc(){}后面的代码也会执行
02 捕获有异常的方法
03 处理多个异常 第一种 多个try{}catch{}
03 处理多个异常 第二种 一个try{}多个catch{}
如catch的异常有子父类关系 子类异常写前面 父类异常写后面 否则报异常
根据里氏代换原则 , 能使用父类型地方一定能使用子类(子类)
03 处理多个异常 第三种 使用 | 捕获多个异常
jdk1.7版本后写法
try{…} final{…}
不管try里面有没有异常 finally都会执行
使用throw的缺点 如果发生异常 异常后面的代码不会再执行
使用try{} catch{}捕获异常 try{}里面异常后面的代码不能执行
但是catch{}里面或finally{}里面或者finally{}后面的代码都可以执
finally{}不能单独使用 多数用于资源的释放
01 无论是否有异常finally都会执行
02 try{…} chath(){…} finally{…}
try{}或catch{}中有return finaly也一定会执行
除非在finally虚拟机退出了,例如Sysytem.exit(0)
如果try或catch里面有return语句,先执行try或catch里的,在retrun前执行finally
如果finally没有return 但是有修改返回值, 修改的没有用 还是返回以前的值
输出
一定会执行
10
如果finally中有return ,并且修改了返回值, 那么就返回修改的值
输出
一定会执行
11
03 异常中的代码是否能执行