`
y806839048
  • 浏览: 1107634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

catch里面有return语句,finally里面的执行

阅读更多

会执行,在return前执行,后返回return处,如果finally自身有return就自身向下,不返回原return处执行

代码示例1:

 

/*

 * 

 */

public class FinallyDemo2 {

    public static void main(String[] args) {

        System.out.println(getInt());

    }

 

    public static int getInt() {

        int a = 10;

        try {

            System.out.println(a / 0);

            a = 20;

        } catch (ArithmeticException e) {

            a = 30;

            return a;

            /*

             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了

             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40

             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30

             */

        } finally {

            a = 40;

        }

 

//      return a;

    }

}

 

执行结果:30

 

代码示例2:

package com.java_02;

 

/*

 * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗?

 */

public class FinallyDemo2 {

    public static void main(String[] args) {

        System.out.println(getInt());

    }

 

    public static int getInt() {

        int a = 10;

        try {

            System.out.println(a / 0);

            a = 20;

        } catch (ArithmeticException e) {

            a = 30;

            return a;

            /*

             * return a 在程序执行到这一步的时候,这里不是return a 而是 return 30;这个返回路径就形成了

             * 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40

             * 再次回到以前的路径,继续走return 30,形成返回路径之后,这里的a就不是a变量了,而是常量30

             */

        } finally {

            a = 40;

            return a; //如果这样,就又重新形成了一条返回路径,由于只能通过1个return返回,所以这里直接返回40

        }

 

//      return a;

    }

}

 

 

执行结果:40

分享到:
评论

相关推荐

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

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

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

    在 Java 规范中规定,在 try-catch-finally 中,如果 try-finally 或者 catch-finally 中都有 return,则两个 return 语句都执行,并且最终返回到调用者那里的是 finally 中 return 的值;而如果 finally 中没有 ...

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

    3. 即使在`finally`块中也有`return`语句,`finally`块中的代码将被执行,然后返回值会被覆盖。这意味着`finally`块的`return`总是会覆盖`try`或`catch`块中的`return`。 现在让我们深入源码层面来进一步理解这个...

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

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

    try-catch-finally-return-in-finally.rar_return

    `finally` 块总是会被执行,即使在 `try` 或 `catch` 中已经有一个 `return` 语句,这使得我们可以确保无论发生什么情况,都能执行必要的清理工作并返回一致的结果。 通过分析 `12.5-1.js` 和 `try-catch-finally-...

    try~catch~finally中关于return的问题

    在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视

    谈谈Java中try-catch-finally中的return语句

    2. 如果`finally`块有`return`语句,无论`try`块是否包含`return`,`finally`块的`return`语句都将决定最终的返回值,因为`finally`总是被执行。 理解这一点对于编写健壮、可靠的Java代码至关重要,特别是涉及资源...

    try-catch-finally捕获异常

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

    try_catch_finally异常处理java

    即使`try`或`catch`块中存在`return`语句,`finally`块的代码也会被执行。这确保了程序的整洁和资源的有效管理。 在Java中,`try-catch-finally`结构可以单独使用,也可以嵌套使用。嵌套的`try-catch-finally`允许...

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

    通过实验和示例,我们可以证明 finally 语句是在 try 的 return 语句执行之后,return 返回之前执行的。 在下面的示例中,我们可以看到 finally 语句是在 try 的 return 语句执行之后,return 返回之前执行的。 ``...

    使用try-catch-finally处理异常

    即使在`try`或`catch`块中有return语句,`finally`块的代码也会被执行。 5. **多层嵌套** 你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理...

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

    "Java中try finally return语句的执行顺序浅析" 关于Java中try finally return语句的执行顺序浅析是Java语言中一个重要的知识点,今天我们来探讨一下try finally return语句的执行顺序。 首先,需要了解的是...

    Java异常处理中同时有finally和return语句的执行问题

    在涉及finally和return语句时,Java有一些特定的行为规则。 首先,`finally`块中的代码总是会被执行,除非程序在执行到`finally`块之前就退出了JVM(例如通过`System.exit()`)。即使在`try`块或`catch`块中有`...

    Java中finally和return的关系实例解析

    4. 在finally中写return语句会有警告,因为它会阻止函数抛出异常,而改为正常返回。 Java中finally和return的关系实例解析是一个非常重要的知识点,掌握它可以帮助开发者写出高质量的Java代码。

    浅谈Java中return和finally的问题

    - `finally` 语句块总是会被执行,无论 `try` 块中是否有 `return` 语句。 - 如果 `finally` 语句块中包含 `return` 语句,它将覆盖 `try` 块中的 `return` 语句,决定最终的返回值。 - 变量的修改在 `finally` 语句...

    Java中finally块执行与return关系深度剖析

    Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。

    java大厂面经、直击BAT

    finally 一定会被执行,如果 finally 里有 return 语句,则覆盖 try/catch 里的 return , 比较爱考的是 finally 里没有 return 语句,这时虽然 finally 里对 return 的值进行了修改,但 return 的值并不改变这种...

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

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

    finally结构的注意点(一)

    1. **返回值**:如果 `finally` 块包含 `return` 语句,那么它将覆盖 `try` 或 `catch` 块中的任何 `return` 语句。这意味着最后的返回值是由 `finally` 块决定的。 2. **跳转语句**:即使使用了 `break`、`...

    try catch finally的执行顺序深入分析

    即使在`try`或`catch`块中有`return`语句,`finally`块仍然会先执行。在这个过程中,函数会将`try`或`catch`块中的`return`语句返回的值暂存起来,然后执行`finally`块。 如果在`finally`块中也有`return`语句,...

Global site tag (gtag.js) - Google Analytics