java – 使用try-catch-finally返回类型

前端之家收集整理的这篇文章主要介绍了java – 使用try-catch-finally返回类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Java’s return value in try-catch-finally mechanism4个
我试过以下代码片段:
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的finally块最终在try..catch中的代码完成后运行(无论成功与否);在您的代码的情况下,这是返回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相关文章