Java的finally关键字

一般用于释放资源,比如IO流。

finally用来做什么

对于没有垃圾回收和析构函数自动调用机制的语言来说,finally非常重要。它能使程序员保证:无论try块里发生了什么,内存总能得到释放。
当要把除内存之外的资源恢复到它们的初始状态时,就要用到finally子句。
在异常没有被当前的异常处理程序捕获的情况下,异常处理机制也会跳到更高一层的异常处理程序之前,执行finally子句:

public class FourException extends Exception {
}  

public class AlwaysFinally {

    public static void main(String[] args) {

        System.out.println("Entering first try block");
        try {
            System.out.println("Entering second try block");
            try {
                throw new FourException();
            } finally {
                System.out.println("finally in 2nd try block");
            }
        } catch (FourException e) {
            System.out.println("Caught FourException in 1st try block");
        } finally {
            System.out.println("finally in 1st try block");
        }

    }

}

执行结果如下:

Entering first try block
Entering second try block
finally in 2nd try block
Caught FourException in 1st try block
finally in 1st try block

当设计break和continue语句的时候,finally子句也会得到执行。

在return中使用finally

因为finally子句总是会执行的,所以在一个方法中,可以从多个点返回,并且可以保证重要的清理工作仍旧会执行。
任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的, 编译器把finally中的return实现为一个warning。

参考

猜你喜欢

转载自blog.csdn.net/qq_19431333/article/details/78201250