java - 尝试/最终阻止问题

标签 java try-catch

找到这个问题 here

我不明白,为什么在第一种情况下打印 CoolReturn+1 而在第二种情况下打印 CoolReturn?它是如何工作的?

谢谢

====================

将打印什么?

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

答案:CoolReturn+1

有点难:

public void testFinally(){
    System.out.println(setOne().toString());

}

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder=null;  /* ;) */
    }
}

答案:CoolReturn

最佳答案

考虑

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        return builder.append("Return");
    }finally{
        builder.append("+1");
    }
}

作为

protected StringBuilder setOne(){
    StringBuilder builder=new StringBuilder();
    try{
        builder.append("Cool");
        StringBuilder ret = builder.append("Return"); // 1
        return ret; // 2
    }finally{
        builder.append("+1"); //3
    }
}

第 1 行被执行,builder 作为结果返回。然后执行第 3 行,builder+1 追加,然后返回 ret,这是对对象的“引用”由 builder 引用。第二种情况也是如此。希望清楚。

关于java - 尝试/最终阻止问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477410/

相关文章:

java - 使用 <c :import> with method post doesn't work

Java、JDBC连接池、JDBC连接回滚

Java while循环无休止地捕获不匹配异常

java - 如何通过在 Try-Catch While 循环中输入特定字母来退出程序?

java - 找不到 getColor() 方法?国际象棋游戏帮助 Java

Java Servlets - 前端 Controller 问题(监听器和上下文)

java - java中try-catch设置日期值有什么用?

Java 分数计算器 - 通过 try/catch 除以零方法

parameters - Lua:使用pcall

java - overridePendingTransition 用于平滑地滑入和滑出 Activity