java异常处理finally

finally中有return

public static int getNum(){
  try{
    return 1;
  }catch (Exception ex){
    return 2;
  }finally {
    return 3;
  }
}

结果是3,因为finally中的return把上面的结果都覆盖了。所以编程规范中,不在finally中执行return。

finally无return,修改变量

public static int getNum(){
  int a = 1;
  try{
     return a;
  }catch (Exception ex){
    return a;
  }finally{
    ++a;
  }
}

最后获取到的是1,因为try中有return,会把1给暂存,返回的是常量1,后面对a的修改并不会影响到前面的return。除非引用数据类型

你可能感兴趣的:(java异常处理finally)