finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会执行的。
finally代码块
格式:
try { 可能产生异常的代码
}catch(定义一个异常变量,用来接收try中抛出的异常对象){
异常的处理逻辑,异常异常对象之后,怎么处理异常对象
一般在工作中,会把异常的信息记录到一个日志中
}
.......
catch(异常类名 变量名){
}finally{ 无论是否出现异常都会执行
}
注意:
1. finally不能单独使用,必须与try一起使用
2.finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放(IO)
public static void main(String[] args) {
try{
readFile("d:\\a.tx");
}catch (IOException e){
e.printStackTrace();
}finally {
System.out.println("资源释放");
}
}
/*
如果传递的路径不是.txt结尾
那么我们就抛出IO异常对象,告知方法的调用者,文件的后缀名不对
*/
public static void readFile(String fileName) throws IOException{
if (!fileName.endsWith(".txt")){
throw new IOException("文件的后缀名不对");
}
System.out.println("路径没有问题,读取文件");
}
输出