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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡奎 中级黑马   /  2012-4-27 16:40  /  4067 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try {
                        int x = de.div(10, -4);       //.....1... 出现异常代码
                        System.out.println("4444");
                } catch (FuShuException e) {      //.....2... 处理异常代码
                        System.out.println("11111");
                        System.out.println("33333");
                        return;  //System.exit(0)     //.....3... 结束方法
                }finally{                         //.....4... 关闭资源
                        System.out.println("22222");
                        return;  //System.exit(0)    //.....5... 结束方法
                }
               
                处理异常步奏是什么?   如果是return, 1,2,3,4,5
                    将return换成System.exit(0), 1,2,3
                    其中的顺序是什么,能详细解释下不?
               

6 个回复

倒序浏览
本帖最后由 Friends★ 于 2012-4-27 16:51 编辑

return和system.exit(0)的区别:

如果在main方法中System.exit(0)与return 没有区别,都是终止程序。


如果不在main方法中:

System.exit()  表示终止程序, JVM 立即停止退出。

return则返回至调用该方法的地方,如果后面还有代码则继续执行
回复 使用道具 举报
1. 如果try  块中存在 return 语句,那么首先也需要将finally  块中的代码执行完毕,然后方法再返回。
2. 如果 try   块中存在 System.exit(0)语句,那么就不会执行 finally            块中的代码,因为System.exit(0)会终止当前运行的Java 虚拟机,程序会在虚拟机终止前结束执行。
回复 使用道具 举报
用return的话,finally语句要执行
用System.exit(0)直接关闭jvm
回复 使用道具 举报
本帖最后由 根号5 于 2012-4-27 17:50 编辑

return  和system.exit(0)的区别是 :return是代码进行到这个位置是结束,返回调用该方法的地方继续往下执行。而system.etit(0)是关闭虚拟机,不管你还有什么代码没有执行,通通地不管,全部停掉。
如在异常当中:
public void  method(){
try{
         System.out.println("进入到黑马学习了");
        return;//调用method方法是打印出  进入到黑马学习了 然后再打印出  经过努力最后终于还是进黑马了  但是后面的game over 不会执行
        (如果把上边的return换做System.exit(0))就只会打印出  
进入到黑马学习了     因为调用该方法意味着JVM停止运行  整个程序就结束了,也就不可能再打印代码了
   }
catch(Exception e)
{
      System.out.println("出了点小故障");
}
finally
{
     System.out.println("经过努力最后终于还是进黑马了");
}
    System.out.println("game  over");
}

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
return是返回函数结果,而System.exit(0)是终止jvm,一般情况下只有出现很大的问题才会终止jvm
回复 使用道具 举报
try{}catch(){}finally{}
finally表示程序一定会执行的语句,可以这么看,return只是结束了其中的主线程,而另外 的线程还是可以去执行finally语句的。
而System.exit(0);则表示立即结束程序,其中的所有线程都会跟着结束。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马