gpt4 book ai didi

java - 最后 block 不设置java中变量的值

转载 作者:行者123 更新时间:2023-12-02 08:42:01 27 4
gpt4 key购买 nike

我有以下代码。

    public static void main(String[] args) {
// TODO Auto-generated method stub

try{
System.out.println("Hardik::"+testFinnalyBlock());
}catch(Exception e){
System.out.println("hhh");
}
}


public static int testFinnalyBlock() throws Exception{
int a=5,b=10;
int sum=0;
try{
sum = a+b;
System.out.println("sum==="+sum);
return sum;
}catch(Exception e){
System.out.println("In Catch");
}finally{
sum = a+30;
System.out.println("sum==="+sum);
// return 1;
}
return 1;
}

上面代码的输出哈迪克::15,虽然我认为应该是 Hardik::35。

谁能告诉我它是如何工作的。谢谢。

最佳答案

根据您的输出,finally block 正在执行...

sum===15
sum===35
Hardik::15

问题在于 try-catch 部分中的 return 语句。 finally 不会更新返回给调用者的 begin 值,因为该值已经被放置在内存的另一部分......

更新

我是一个相当老派的人,所以我相信我的所有方法都有一个入口点和一个导出点......

像下面这样的东西会产生你想要得到的结果......

public static int testFinnalyBlock() throws Exception {
int a = 5, b = 10;
int sum = 0;
try {
sum = a + b;
System.out.println("sum===" + sum);
} catch (Exception e) {
System.out.println("In Catch");
} finally {
sum = a + 30;
System.out.println("sum===" + sum);
}
return sum;
}

如果由于错误而需要返回不同的值,则应修改 try-catchcatch 部分中的 sum >

关于java - 最后 block 不设置java中变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18480258/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com