finally注意
- finally不能单独使用,必须和try一起使用
- finally一般用于资源释放,无论程序是否异常,最后都要资源释放
程序正常执行输出顺序
package cn.itcast.test;
import java.io.IOException;
public class TryTest6 {
public static void main(String[] args) {
try {
readFile("c:\\a.txt");
//异常时候不执行
System.out.println("资源释放1");
} catch (IOException e) {
e.printStackTrace();
}finally {
//异常时候也会执行
System.out.println("资源释放2");
}
System.out.println("后续代码");
}
public static void readFile(String fileName) throws IOException {
if (!fileName.endsWith(".txt")) {
throw new IOException("文件后缀名称不对");
}
System.out.println("路径没有问题,读取文件");
}
}
程序抛异常时输出顺序
try范围中的某一行代码如果抛出了异常,那么之后的代码也不执行了,只执行catch,finally中的代码
package cn.itcast.test;
import java.io.IOException;
public class TryTest6 {
public static void main(String[] args) {
try {
readFile("c:\\a.tt");
//异常时候不执行
System.out.println("资源释放1");
} catch (IOException e) {
e.printStackTrace();
System.out.println("catch 代码");
}finally {
//异常时候也会执行
System.out.println("资源释放2");
}
System.out.println("后续代码");
}
public static void readFile(String fileName) throws IOException {
if (!fileName.endsWith(".txt")) {
throw new IOException("文件后缀名称不对");
}
System.out.println("路径没有问题,读取文件");
}
}