题目一:try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,
* 什么时候被执行,在return前还是后?使用程序验证。
*
* 答:会,在return语句执行的中间运行的finally语句
* 在try语句中,在执行return语句的时候,要返回的结果其实已经准备好了,
* 这时候try中返回的结果先储存到一个局部变量中,执行完finally后,从中取出返回结果.
* 1: return i; //20 这个时候 只是进行了返回的标记,同时,确定要返回的数据值,没有真正的执行返回语句
* 2: 执行了 finally语句
* 3: 再回到return i; 返回当时的i值,也就是20
* 程序运行结果:
* 产生了异常
* 执行finally语句
* 结果是:20
* 程序结束了
* */
public class Try_Test {
public static void main(String[] args) {
System.out.println("结果是:"+new Try_Test().method(20));
//System.out.println(result);
System.out.println("程序结束了");
}
private static int method(int i) {//i = 20
// TODO Auto-generated method stub
try {
System.out.println(i/0);
} catch (Exception e) {
// TODO: handle exception
System.out.println("产生了异常");
return i;//20
}
finally {
System.out.println("执行finally语句");
i++;//21
}
return 0;
}
}
|
|