黑马程序员技术交流社区
标题:
finally和return
[打印本页]
作者:
ZhangYL
时间:
2014-7-27 08:30
标题:
finally和return
本帖最后由 ZhangYL 于 2014-8-2 07:27 编辑
如果在try中写了return语句,那么finally和return谁会先执行呢?
作者:
zippo
时间:
2014-7-27 08:38
class Test7 {
//
public static void main(String[] args) {
System.out.println();
div(10, 0);
}
public static void div(int a, int b) {
int c = 0;
try {
c = a / b;
return;
}catch(ArithmeticException e){
e.printStackTrace();
}finally {
System.out.println("finally的语句执行了");
}
}
}
复制代码
s很明显是finnally,这是证明过程。
作者:
叶飞翔
时间:
2014-7-27 08:40
先执行完finally再真正return的。
作者:
star5603
时间:
2014-7-27 09:28
就是return在finally之前,也会执行finally,除非在之前有System.exit(0)
作者:
渴望学习
时间:
2014-7-27 10:54
当try中的代码抛异常了剩下没有执行的代码将不再执行,直接走到catch,最后 finally, 楼主说的,return;和finally 哪个先执行,不知道该怎么回答你,就像一楼的代码,return根本就执行不到。。楼主可以 debug 调试一下,看一下代码的执行过程, 最后告诉你一个结论,finally 总是 最后执行的。只有一种情况它不执行, System.exit(0);
作者:
ZhangYL
时间:
2014-7-28 09:27
谢谢各位大神了 学到了 我以后有不懂的实在想不出的也会说出来 希望大神们能帮忙解答一下 谢了
作者:
alvinbx
时间:
2014-7-28 19:55
如果try中有异常,执行catch,finally。如果try中没有异常,执行try里的代码,然后finally,然后跳回try里写的return语句,程序结束。之前记得是这样的,听了楼上几位说了以后又亲测了一遍的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2