欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中try..catch..finally语句的使用

程序员文章站 2023-01-13 19:41:21
关于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

相关标签: Java java