总结:
a. 对于返回值是基本类型的也包括String类型,情况分几种:
1.只有try体中有return时,返回try里的值
2.只有finally体中有return时,返回finally里的值
3.在try体和finally体里都没有return,只有最下面有个return时,以finally体里为准
4.当try体和finally体里都有return,以finally体里为准
@SuppressWarnings("finally")
public int getResult(){
int i = 0;
//实例一
/*try{//值为1
i = 1;
return i;
}finally {
i = 5;
}*/
//实例二
/*try{//值为5
i = 1;
}finally {
i = 5;
}
return i;*/
//实例三
try{//值为5
i = 1/0;
return i;
}catch(Exception e) {
e.printStackTrace();
}finally {
i = 5;
return i;
}
// return i;
}
b.对于返回值是可变的,则不管是上面哪种情况都要改变值,如下,输出结果都为I LOVE YOU
public StringBuffer getStringResult() {
StringBuffer str =new StringBuffer("I");
try{//值为1
str.append(" LOVE ");
}finally {
str.append(" YOU ");
}
return str;
}