public int getTest() {
try {
String s = null;
s.toString();
System.out.println("执行 1");
return 1;
} catch (Exception e) {
e.printStackTrace();
System.out.println("执行 2");
return 2;
} finally {
System.out.println("执行 3");
return 3;
}
}
public static void main(String[] args) {
int i = new A().getTest();
System.out.println("i:" + i);
}
调用这个带返回值的函数,会返回哪个值呢?
执行结果如图:
真出现异常,会catch异常,但是,最终返回的是finally代码块中的值;
如果去掉finally代码块的返回语句呢?
public int getTest() {
try {
String s = null;
s.toString();
System.out.println("执行 1");
return 1;
} catch (Exception e) {
e.printStackTrace();
System.out.println("执行 2");
return 2;
} finally {
System.out.println("执行 3");
}
}
执行结果如图:
返回了catch中的返回值;
看来finally还有点霸道哦,如果它想要返回值就必须要到,如果不想要,才轮得到其他的代码块哟!
好了,又可以愉快玩耍了。