java - 带有 try-catch-finally 的返回类型

标签 java

<分区>

我尝试了以下代码片段:

private Integer getnumber() {
    Integer i = null;
    try {
        i = new Integer(5);
        return i;
    } catch(Exception e) {
        return 0;
    } finally {
        i = new Integer(7);
    }
}

此方法返回 5 而不是 7。

Why it returns 5 and not 7?

提前致谢。

最佳答案

发生这种情况是因为 try..catch..finallyfinally block 在 try..catch 中的代码运行之后运行完成(无论成功与否);对于您的代码,这是发生 return i 时。

由于这种行为,在您将新值 7 赋给它之前,i 的值已经被放入该方法的返回变量中。以下将起作用:

private Integer getnumber(){
  Integer i = null;
  try {
    i = new Integer(5);
  }
  catch(Exception e){
    i = new Integer(0);
  }
  finally{
    i = new Integer(7);
  }
  return i;
}

关于java - 带有 try-catch-finally 的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159174/

相关文章:

java - Eclipse:如何检测项目是工作区的一部分

java - JPA 可通过 View 和 secondaryTable 进行插入和更新

java - 对象占位符?

java - 发送Hbase批量Puts压缩?

java - 关键的 RabbitMQ 方法参数

java - spring jpa - 如何持久传递双向关系

java - 性感素数特定打印和计数

java - 在初始化 SpringBootApplication 的 ApplicationContextInitializer bean 之前启动一个 @WebServlet

java - 是否有一种 map 可以针对具有相同值的*键序列*进行优化?

java - 如何在Tapestry 5中使用通用编辑器进行数据库访问?