finally中的return可以覆盖掉trycatch中的return语句
作者:互联网
以下代码执行的结果显示是多少()?
// 以下代码执行的结果显示是多少()?
public class Demo{
public static void main(String[] args){
System.out.print(getNumber(0));
System.out.print(getNumber(1));
System.out.print(getNumber(2));
System.out.print(getNumber(4));
}
public static int getNumber(int num){
try{
int result = 2 / num;
return result;
}catch (Exception exception){
return 0;
}finally{
if(num == 0){
return -1;
}
if(num == 1){
return 1;
}
}
}
}
答案是 -1110
finally 中 return 语句会覆盖 try-catch 中的 return 语句 。
try,catch,finally中:
- num=0,捕获异常,执行catch语句,catch中返回0,执行finally语句,finally语句中返回-1,于是返回finally中的-1;
- num=1,try中返回2,执行finally语句,finally语句中返回1,于是返回finally中的1;
- num=2,try中返回1,执行finally语句,finally语句中没有返回,于是返回try中的1;
- num=4,try中返回0,执行finally语句,finally语句中没有返回,于是返回try中的0.
标签:语句,返回,return,try,finally,num,trycatch 来源: https://blog.csdn.net/qunqunstyle99/article/details/90047351