`
aeritheve
  • 浏览: 33847 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

finally语句

阅读更多

finally语句

 

finally的用法:只能用在try/catch语句中,并且附带着一个语句块,表示这段语句最终总是被执行。请看下面的代码:

public final class FinallyTest {

    public static void main(String[] args) {
        try {
            throw new NullPointerException();
        } catch (NullPointerException e) {
            System.out.println("程序抛出了异常");
        } finally {
            System.out.println("执行了finally语句块");
        }
    }

}

运行结果说明了finally的作用:

1. 程序抛出了异常

2. 执行了finally语句块

 

有没有一种情况使finally语句块得不到执行呢?大家可能想到了return、continue、break这三个可以打乱代码顺序执行语句的规律。那我们就来试试看,这三个语句是否能影响finally语句块的执行:

public final class FinallyTest {

    // 测试return语句
    public ReturnClass testReturn() {
        try {
            return new ReturnClass();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("执行了finally语句");
        }
        return null;
    }

    // 测试continue语句
    public void testContinue() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println(i);
                if (i == 1) {
                    continue;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                System.out.println("执行了finally语句");
            }
        }
    }

    // 测试break语句
    public void testBreak() {
        for (int i = 0; i < 3; i++) {
            try {
                System.out.println(i);
                if (i == 1) {
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                System.out.println("执行了finally语句");
            }
        }
    }

    public static void main(String[] args) {
        FinallyTest ft = new FinallyTest();
        // 测试return语句
        ft.testReturn();
        System.out.println("----------return over----------");
        // 测试continue语句
        ft.testContinue();
        System.out.println("----------continue over----------");
        // 测试break语句
        ft.testBreak();
        System.out.println("----------break over----------");
    }
}

 

public class ReturnClass {
    public ReturnClass() {
        System.out.println("执行了return语句");
    }
}

上面这段代码的运行结果如下:

执行了return语句

执行了finally语句

----------return over----------

0

执行了finally语句

1

执行了finally语句

2

执行了finally语句

----------continue over----------

0

执行了finally语句

1

执行了finally语句

----------break over----------

 

return、continue和break都没能阻止finally语句块的执行。

从输出的结果来看return语句是在finally语句块之后执行的,也就是说finally语句块是在程序退出方法之前被执行的。同样,finally语句块是在循环被跳过(continue)和中断(break)之前被执行的。

分享到:
评论

相关推荐

    17.javatry…catch…finally语句.zip

    17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句...

    java 中finally语句块与return的执行关系

    Java 中 finally 语句块与 return 的执行关系 Java 中的 finally 语句块是用于保证无论出现什么情况,一定要执行的代码块。在 try-catch-finally 结构中,finally 语句块的执行顺序是非常重要的。下面我们来详细...

    Delphi异常处理try_except语句和try_finally语句用法以及区别.pdf

    ### Delphi异常处理try_except语句和try_finally语句用法以及区别 #### 异常的来源 在Delphi的应用程序中,多种情况都可能导致异常的产生,具体包括: 1. **文件处理**:例如读写文件时遇到权限问题、文件不存在或...

    Java语言finally语句详解,finally到底是在return之前还是之后执行.zip

    Java语言finally语句详解,finally到底是在return之前还是之后执行.zip

    josonle#Coding-Now#finally语句如何执行1

    - 无论try是否发生异常,finally语句都会执行- 如果try/catch中包含控制转移语句(return、continue、break),finally

    try...catch...finally语句的相关案列

    try...catch...finally语句的相关案列

    关于Java中finally语句块的深度辨析.doc

    关于Java中finally语句块的深度辨析.doc

    【Python】详解 try-except-else-finally 语句 —— 异常处理完全解读(上)

    2.3 try-except-else-finally 语句 2.4 小结 三、异常抛出 (Exception raising) 四、异常自定义 (Exception customizing) 五、预定义的清理行为 (with 语句) 六、断言 (Asserting) 七、小结 (Summary) 一、绪论 ...

    Java finally语句到底是在return之前还是之后执行?

    在Java编程语言中,`finally`语句块是一个非常关键的结构,用于确保特定代码无论在任何情况下(包括异常发生或正常返回)都会被执行。这个特性使得`finally`成为处理资源清理,如关闭文件流、数据库连接等操作的理想...

    浅谈Java finally语句到底是在return之前还是之后执行(必看篇)

    Java 中 finally 语句的执行顺序探讨 在 Java 中,finally 语句的执行顺序是一个常见的探讨话题。很多人都认为 finally 语句一定会被执行,但这是不正确的。在某些情况下,finally 语句可能不会被执行,例如在 try ...

    讲解Java编程中finally语句的基本使用方法

    在Java编程中,`finally`语句块是一个非常重要的概念,它主要与`try-catch`结构一起使用,用于确保某些代码无论是否发生异常都会被执行。`finally`语句是异常处理模型的一部分,旨在保持代码的整洁性和资源管理的...

    关于Java中的try-catch-finally语句和return

    第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)  第二:finally里面不建议放return语句,根据需要,return语句...

    try-catch-finally捕获异常

    try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的使用方法和注意事项。 一、try...

    try、catch、finally、return 执行顺序.doc

    在执行 try、catch、finally 语句时,finally 语句总是最后执行的,也就是说,即使在 try 或 catch 语句中有 return 语句,finally 语句仍然会执行。finally 语句是在 return 语句执行之后、返回之前执行的,这意味...

    Powershell中Finally语句用法示例

    在Powershell编程中,`Finally`语句是异常处理机制的一个重要组成部分,它用于确保在发生异常或者脚本被用户中断(如通过Ctrl+C)时,某些关键性的清理操作仍然能够被执行。在这个示例中,我们将深入探讨`Finally`...

    完全解析Java编程中finally语句的执行原理

    在Java编程中,`finally`语句块是一个关键的组成部分,尤其在异常处理中起到至关重要的作用。然而,关于`finally`的执行原理,并非所有程序员都对其有深入的理解。`finally`的主要功能是在程序执行过程中确保某些...

    Java捕获和处理异常.pdf

    finally语句中的代码将在try语句和catch语句执行完成后执行,无论是否出现异常。finally语句通常用于关闭资源,例如关闭网络连接。 四、异常处理的实例 下面是一个简单的异常处理实例: ```java public class Test...

    java异常处理例题代码文.pdf

    java异常处理机制包括try、catch、finally三部分,try块用于执行可能出现异常的代码,catch块用于捕获和处理异常,finally块用于执行finally语句,无论是否出现异常都会执行。 App9_1.java:捕获数组下标越界异常和...

    关于Java中try finally return语句的执行顺序浅析

    首先,需要了解的是finally语句块是否一定会执行的问题。很多人第一反应是肯定要执行的,但仔细一想,如果一定会执行的话,也就不会这么SB的问了。 事实上,finally语句块不一定会执行。只有与finally相对应的try...

    Java应用程序-习题-第7章.doc

    在本章节中,我们将详细介绍 Java 中的异常处理机制,包括异常的分类、try-catch 语句、throws 语句、finally 语句、自定义异常类等。 一、异常的分类 在 Java 中,异常可以分为两大类:Error 和 Exception。Error...

Global site tag (gtag.js) - Google Analytics