黑马程序员技术交流社区
标题:
try与finally的问题??
[打印本页]
作者:
小蚊子
时间:
2013-12-23 23:13
标题:
try与finally的问题??
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
作者:
夏德宇
时间:
2013-12-23 23:27
finally: 最后;终于 的意思,肯定会执行到,不管前面有什么,在后面执行。
作者:
王国库
时间:
2013-12-23 23:28
执行了 楼主可以在finally里加一条输出语句试一试,在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。执行完finally之后,再返回结果,
作者:
胡永城
时间:
2013-12-23 23:54
本帖最后由 胡永城 于 2013-12-23 23:56 编辑
先执行的return 在执行finally
以下为代码验证:
public class Test7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个作为标示的值,在打印的字符串中,谁的j值小,谁首先运行
int j;
for (j = 0; j < 3; j++) {
try {
System.out.println("break:j= "+(++j));
break;//验证break与finally的执行顺序。
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally:j= " + (++j));
}
}
// 定义一个作为标示的值,在打印的字符串中,谁的i值小,谁首先运行
int i = 0;
// // 当代码块可能产生异常时,用try {} catch () {}语句包裹。
try {
System.out.println("try : i = " + (++i));
test(1, 0);
} catch (ArithmeticException e) { // 捕获ArithmeticException异常对象,在代码块中处理
System.out.println("return : i = " + (++i));
return;
} finally {
System.out.println("finally : i = " + (++i));
}
}
// 定义一个可能会产生异常的函数,并抛出交由调用者处理
private static int test(int a, int b) throws ArithmeticException {
return a / b;
}
}
复制代码
作者:
FFF
时间:
2013-12-24 08:35
胡永城 发表于 2013-12-23 23:54
先执行的return 在执行finally
以下为代码验证:
哈哈哈哈~~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2