A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZhangYL 中级黑马   /  2014-7-27 08:30  /  1101 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ZhangYL 于 2014-8-2 07:27 编辑

如果在try中写了return语句,那么finally和return谁会先执行呢?

6 个回复

正序浏览
如果try中有异常,执行catch,finally。如果try中没有异常,执行try里的代码,然后finally,然后跳回try里写的return语句,程序结束。之前记得是这样的,听了楼上几位说了以后又亲测了一遍的。
回复 使用道具 举报
谢谢各位大神了  学到了 我以后有不懂的实在想不出的也会说出来 希望大神们能帮忙解答一下  谢了
回复 使用道具 举报
当try中的代码抛异常了剩下没有执行的代码将不再执行,直接走到catch,最后 finally, 楼主说的,return;和finally 哪个先执行,不知道该怎么回答你,就像一楼的代码,return根本就执行不到。。楼主可以 debug 调试一下,看一下代码的执行过程, 最后告诉你一个结论,finally 总是 最后执行的。只有一种情况它不执行, System.exit(0);
回复 使用道具 举报
就是return在finally之前,也会执行finally,除非在之前有System.exit(0)
回复 使用道具 举报
先执行完finally再真正return的。
回复 使用道具 举报
  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,这是证明过程。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马