黑马程序员技术交流社区

标题: 异常中 return 与 system.exit(0) 区别 [打印本页]

作者: 胡奎    时间: 2012-4-27 16:40
标题: 异常中 return 与 system.exit(0) 区别
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
                    其中的顺序是什么,能详细解释下不?
               
作者: Friends★    时间: 2012-4-27 16:48
本帖最后由 Friends★ 于 2012-4-27 16:51 编辑

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

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


如果不在main方法中:

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

return则返回至调用该方法的地方,如果后面还有代码则继续执行
作者: 崔仁军    时间: 2012-4-27 16:56
1. 如果try  块中存在 return 语句,那么首先也需要将finally  块中的代码执行完毕,然后方法再返回。
2. 如果 try   块中存在 System.exit(0)语句,那么就不会执行 finally            块中的代码,因为System.exit(0)会终止当前运行的Java 虚拟机,程序会在虚拟机终止前结束执行。
作者: 韩新凯    时间: 2012-4-27 17:00
用return的话,finally语句要执行
用System.exit(0)直接关闭jvm
作者: 根号5    时间: 2012-4-27 17:37
本帖最后由 根号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");
}


作者: 一生一世    时间: 2012-4-27 19:38
return是返回函数结果,而System.exit(0)是终止jvm,一般情况下只有出现很大的问题才会终止jvm
作者: prospect    时间: 2012-4-27 21:21
try{}catch(){}finally{}
finally表示程序一定会执行的语句,可以这么看,return只是结束了其中的主线程,而另外 的线程还是可以去执行finally语句的。
而System.exit(0);则表示立即结束程序,其中的所有线程都会跟着结束。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2