黑马程序员技术交流社区

标题: 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
  1. class Test7 {
  2.         //
  3.         public static void main(String[] args) {
  4.                 System.out.println();
  5.                 div(10, 0);
  6.         }

  7.         public static void div(int a, int b) {
  8.                 int c = 0;
  9.                 try {
  10.                         c = a / b;
  11.                         return;
  12.                 }catch(ArithmeticException e){
  13.                         e.printStackTrace();
  14.                 }finally {
  15.                         System.out.println("finally的语句执行了");
  16.                 }
  17.         }

  18. }
复制代码
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