java - 这段代码在java内部处理中是如何工作的

标签 java exception

我知道即使代码抛出异常或者它成功完成,finally block 也会执行,现在我怀疑的是这段代码

returns 40

这是显而易见的,但现在如果我

comment return 40;

it returns 10

任何人都可以帮助我理解 JVM 如何返回 10 为什么它不提示函数应该返回一个值。

public class ExceptionTest {
        public static void main(String[] args) {
        int i=  returnSomething();
        System.out.println(i);
        }
    
        private static int returnSomething() {
            
            try{
                System.out.println("try");
                return 10;
            }
            catch(Exception e)
            {
                return 20;
            }
            finally
            {
                System.out.println("finally ");
                return 40;
            }
        }
    
    }

最佳答案

就在执行 try block 中的 return 之前,控制权被转移到 finally block 。执行finally block 时,该函数将返回除非您在finally block 本身中有一个return

因此,当您在 finally block 中有 return 时,该函数返回 40;当您在 try block 中返回值时,该函数返回 try block 中的值。不要在finally block 中返回。

<小时/>

建议在finally block 中返回。

关于java - 这段代码在java内部处理中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19533023/

相关文章:

exception - 在 Angular2 中捕获 401 异常

java - 在 Android 中从麦克风录制 wav 文件 - 问题

JavaFx:使用加法/乘法/双向绑定(bind)数字

java - 将引用类型变量作为方法参数传递

java - <init> 在 Java 异常中表示什么?

java - Hibernate - 持久化两个对象时出现 NonUniqueObjectException

php - php抛出异常后的代码没有执行

java - 是否可以挂起子线程然后回调父线程,然后再次恢复子线程

java - 如何在 Net-Beans(或一般 Java)中设置 FileReader 的路径?

java - 为什么在 Java 中会出现 NoClassDefFoundError 异常?