exit()方法属于System类,System这个类是在java.lang包中,我们从API文档中找到这个方法(java.lang包在系统运行中自动加载,不需要通过import这个方法,System这个类是在java.lang包中,java.lang包在系统运行中自动加载,不需要通过import语句导入,所以可以直接调用该方法)。
从这里我们可以看出关于exit()方法:
修饰符:static viod
参数类型:int
方法描述:终止当前运行的 Java 虚拟机。
接着我们点进去这个方法查看
终止当前运行的 Java 虚拟机。
参数用作状态代码;按照惯例,非零状态代码表示异常终止。
该方法调用exit类中的方法 Runtime。此方法永远不会正常返回。
该调用System.exit(n)实际上等效于以下调用:Runtime.getRuntime().exit(n)
参数:status - 退出状态。
抛出:SecurityException- 如果安全管理器存在且其checkExit 方法不允许以指定状态退出。
总结一下exit()方法:
语法:
System.exit(参数);
状态:
1.正常终止当前运行的Java虚拟机:System.exit(0)
2.异常终止当前运行的Java虚拟机:System.exit(非零的int型参数)
虽然exit()方法的参数不同,所以终止的状态也不同,但是效果确实相同的(关闭当前虚拟机),为什么还要有正常终止和异常终止两种状态呢?因为根据使用的场景不同,需要我们自己判断该方法应进行哪种状态的终止。
接下来我们创建一个类命名为test,用try-catch语句举例说明:
package DmException;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
try {
int a=10;
Scanner read=new Scanner(System.in);
System.out.print("请输入除数:");
int b=read.nextInt();
System.out.println("a/b="+a/b);
System.exit(0);
}catch (ArithmeticException e){
System.out.println("除数不能为0");
e.printStackTrace();
System.exit(-1);
}
}
}
在这里我们将正常终止运行的exit()方法放到try语句中,异常终止的exit()方法放到catch语句中,我们运行查看结果:
请输入除数:2
a/b=5
进程已结束,退出代码为 0
第一次我们将2作为除数输入,成功输入了a/b=5,然后执行System.exit(0); 从而正常退出虚拟机,退出代码为 0
请输入除数:0
除数不能为0
java.lang.ArithmeticException: / by zero
at DmException.test.main(test.java:12)
进程已结束,退出代码为 -1
第二次我们将0作为除数输入,将产生一个数字运算异常(除数不能为0),从而执行catch语句,抛出一个异常,提示除数不能为0,输出ArithmeticException 异常,然后执行System.exit(-1); 从而异常退出虚拟机,退出代码为-1
所以我们根据使用的场景不同,选择exit()方法合适的退出状态。
注:本篇文章仅个人见解,若有错误,欢迎指正!