【零基础学Java】—finally代码块(四十七)

🧨🧨🧨🧨🧨🧨finally代码块

​finally​​:有一些特定的代码块无论是否异常是否发生,都要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。

什么时候的代码必须最终执行?

当我们在try语句块中打开了一些物理资源(磁盘文件/网络连接/数据库连接等等)我们都得在使用完之后,最终关闭打开的资源。

finally语法:

【零基础学Java】—finally代码块(四十七)_资源释放

注意:

  • ​finally​​​不能单独使用,必须和​​try​​一起使用
  • ​finally​​一般用于资源释放(资源回收),无论是程序是否出现异常,最终都要资源释放。
public class demoFinally {
public static void main(String[] args) {
try{//可能会产生异常代码
readFile("c:\\a.txt");

}
catch(IOException e){
e.printStackTrace();

}finally {
System.out.println("资源释放");
}
}

public static void readFile(String fileName) throws IOException{
if(!fileName.endsWith(".txt")){
System.out.println("文件的后缀名不对");
}
System.out.println("路径没有问题,读取文件");
}
}

【零基础学Java】—finally代码块(四十七)_代码块_02

二、异常注意事项

  • 多个异常分别处理
  • 多个异常一次捕获,多次处理
  • 多个异常一次捕获,一次处理
    一般我们是使用一次捕获多次处理的方式,格式如下:

【零基础学Java】—finally代码块(四十七)_intellij idea_03
【零基础学Java】—finally代码块(四十七)_java_04
【零基础学Java】—finally代码块(四十七)_资源释放_05
注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。
【零基础学Java】—finally代码块(四十七)_资源释放_06