System.exit() 是 Java 中立即终止 JVM 进程并返回整数状态码的方法,0 表示成功,非零表示错误;需谨慎使用,避免跳过资源清理,推荐用于命令行程序而非 Web 服务。

System.exit() 是 Java 中用于立即终止当前 JVM 进程的方法,它能向操作系统返回一个整数状态码,常用于命令行程序中向调用者(如 Shell 脚本)反馈执行结果。
理解 exit code 的含义
调用 System.exit(int status) 时传入的整数即为退出码。按惯例:
- 0 表示程序成功执行;
- 非零值(如 1、2、-1 等)通常表示某种错误或异常情况;
- 具体含义由程序自行定义,但建议在文档或注释中说明。
基本用法示例
以下是一个简单判断参数是否为空并返回不同 exit code 的控制台程序:
public class ExitDemo {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Error: No argument provided.");
System.exit(1); // 失败
} else {
System.out.println("Hello, " + args[0] + "!");
System.exit(0); // 成功
}
}
}编译运行后,在终端中可通过 $? 查看上一个命令的退出码:
立即学习“Java免费学习笔记(深入)”;
$ java ExitDemo Alice Hello, Alice! $ echo $? # 输出 0 $ java ExitDemo Error: No argument provided. $ echo $? # 输出 1
注意事项与常见误区
使用 System.exit() 需注意:
- 它会强制终止 JVM,所有未完成的线程、finally 块(除非在 shutdown hook 中)、资源清理逻辑都会被跳过;
- 避免在大型应用或 Web 服务中随意调用,仅推荐用于简单脚本类控制台程序;
- 若需优雅退出(如关闭文件、释放连接),应优先考虑正常流程结束,或配合 Runtime.addShutdownHook();
- exit code 范围建议控制在 0–127,部分系统对负数或大于 127 的值会做截断或映射处理。
替代方案:让 main 正常返回
多数情况下,更推荐通过自然结束 main 方法来退出:
- return; 即可让 JVM 正常退出,此时隐式返回 0;
- 若需返回非零码,仍需显式调用 System.exit(n);
- main 方法本身不能声明 throws,所以异常导致的非零退出也得靠 System.exit() 或顶层 try-catch 捕获后处理。


















