System.exit(-1)和return 的区别

Posted 薛文博

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.exit(-1)和return 的区别相关的知识,希望对你有一定的参考价值。

对于只有一个单一方法的类或者系统来说是一样的,但是对于含有多个类和方法,且调用关系比较复杂时就不一样了。
System.exit(-1)是指所有程序(方法,类等)停止,系统停止运行。
return只是这一个方法停止,并不影响其他方法的顺序运行。比如:
void a(){
b();
c();
d();
}其中b()中是return.c()是System.exit(-1);那么
b()会执行,c()会执行,而d()不会被执行。

System.exit(int status)
public static void exit(int status)
终止当前正在运行的 Java 虚拟机。参数用作状态码;根据惯例,非零的状态码表示异常终止。

该方法调用 Runtime 类中的 exit 方法。该方法永远不会正常返回。
调用 System.exit(n) 实际上等效于调用:

Runtime.getRuntime().exit(n)

参数:
status - 退出状态。
抛出:


SecurityException - 如果安全管理器存在并且其 checkExit 方法不允许以指定状态退出
Runtime.exit(int status)
通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。此方法从不正常返回。可以将变量作为一个状态码;根据惯例,非零的状态码表示非正常终止。
虚拟机的关闭序列包含两个阶段。在第一个阶段中,会以某种未指定的顺序启动所有已注册的关闭挂钩(如果有的话),并且允许它们同时运行直至结束。在第二个阶段中,如果已启用退出终结,则运行所有未调用的终结方法。一旦完成这个阶段,虚拟机就会暂停。
如果在虚拟机已开始其关闭序列后才调用此方法,那么若正在运行关闭挂钩,则将无限期地阻断此方法。如果已经运行完关闭挂钩,并且已启用退出终结 (on-exit finalization),那么此方法将利用给定的状态码(如果状态码是非零值)暂停虚拟机;否则将无限期地阻断虚拟机。
System.exit 方法是调用此方法的一种传统而便捷的方式。
参数:
status - 终止状态。按照惯例,非零的状态码表明非正常终止。 
抛出: 
SecurityException - 如果安全管理器存在,并且其 checkExit 方法不允许存在指定的状态 

 

以上是关于System.exit(-1)和return 的区别的主要内容,如果未能解决你的问题,请参考以下文章

请问System.exit(-1)具体怎么用?为啥捕获异常的时候会用到?

使用 System.exit() 调用同一类中的另一个方法

finally中的return

System.exit和System.exit区别

JAVA怎样终止代码的执行?

System.exit和System.exit区别