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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© routopia 山林野马   /  2014-4-14 21:08  /  928 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都知道在一个if-else判断中,如果我们需要停止程序,那么我们使用System.exit(0)。
而System.exit(1)一般放在catch块中,当捕获到异常,停止程序。
除了使用上的区别,这两者还有什么区别?求解。


3 个回复

正序浏览
最简单的,就是看手册:
  1. exit

  2. public void exit(int status)
  3. 通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。此方法从不正常返回。可以将变量作为一个状态码;根据惯例,非零的状态码表示非正常终止。
  4. 虚拟机的关闭序列包含两个阶段。在第一个阶段中,会以某种未指定的顺序启动所有已注册的关闭钩子 (hook)(如果有的话),并且允许它们同时运行直至结束。在第二个阶段中,如果已启用退出终结,则运行所有未调用的终结方法。一旦完成这个阶段,虚拟机就会暂停。

  5. 如果在虚拟机已开始其关闭序列后才调用此方法,那么若正在运行关闭钩子,则将无限期地阻断此方法。如果已经运行完关闭钩子,并且已启用退出终结 (on-exit finalization),那么此方法将利用给定的状态码(如果状态码是非零值)暂停虚拟机;否则将无限期地阻断虚拟机。

  6. System.exit 方法是调用此方法的一种传统而便捷的方式。

  7. 参数:
  8. status - 终止状态。按照惯例,非零的状态码表明非正常终止。
  9. 抛出:
  10. SecurityException - 如果安全管理器存在,并且其 checkExit 方法不允许存在指定的状态
  11. 另请参见:
  12. SecurityException, SecurityManager.checkExit(int), addShutdownHook(java.lang.Thread), removeShutdownHook(java.lang.Thread), runFinalizersOnExit(boolean), halt(int)
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

回复 使用道具 举报
public static void exit(int status)
终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非 0 的状态码表示异常终止。
该方法调用 Runtime 类中的 exit 方法。该方法永远不会正常返回。

调用 System.exit(n) 实际上等效于调用:

Runtime.getRuntime().exit(n)

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
来自于c语言的保留编程习惯,函数返回是返回状态码,0表示正常,非零表示异常

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马