Java中try..catch..finally语句的使用
程序员文章站
2022-05-19 11:16:37
关于try…catch的子句,finally的使用:1.在finally子句中的代码是最后执行的,并且是一定会执行的,即使try里面的代码出现了异常。2.finally子句必须和try一起出现使用,不能单独编写。一个try,可以有多个catch,但只能有一个finally,且顺序固定为:try…catch(可以多个)…finally。一个try只跟一个finally也是允许的,可以没有catch。一个try,一个catch。一个try,多个catch。一个try,(任意个catch,可以0个)...
关于try…catch的子句,finally的使用:
1.在finally子句中的代码是最后执行的,并且是一定会执行的,即使try里面的代码出现了异常。
2.finally子句必须和try一起出现使用,不能单独编写。
一个try,可以有多个catch,但只能有一个finally,且顺序固定为:try…catch(可以多个)…finally。
一个try只跟一个finally也是允许的,可以没有catch。
一个try,一个catch。
一个try,多个catch。
一个try,(任意个catch,可以0个),一个finally。
3.finally语句通常使用在哪些情况呢?
当一些代码,不管try里面出现异常,还是没有出现异常,这些代码最终都是必须要执行的,那么这些代码可以放在finally语句中。
如果放在try中,可能这些代码上面就已经出现了异常,而导致这些代码没有执行。
所以说finally语句中的代码一般完成资源的释放与关闭,即使try中出现异常,也能有保障。
测试代码:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Test09 {
public static void main(String[] args) {
FileInputStream fis = null;
try {
// 创建输入流,可能会创建失败,抛出异常
fis = new FileInputStream("H:\\test06.txt");
// 假设这里也可能出现别的异常,例如空指针异常
String str = null;
str.toString();
// 输入流创建使用后需要关闭输入流
// 能在这里写关闭输入流吗?显然不合适,万一try中间出现异常呢?
//if (fis != null) fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} finally {
// 把关闭输入流放在这,确保关闭会执行
//if (fis != null) fis.close(); // 这样写发现close()又会报错,因为close()抛出了IOException,需要继续捕捉
try {
if (fis != null) fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("hello world!");
}
}
本文地址:https://blog.csdn.net/pipizhen_/article/details/107388010
上一篇: 正则表达式不包含属性
下一篇: 吃葡萄干的八大好处都有哪些呢