黑马程序员技术交流社区
标题: 异常中 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 |