And*_*ili 18 java program-entry-point exit-code
我有一个简单的命令行Java应用程序的疑问.
所以我有这个命令行应用程序,它由Main类中定义的main()方法启动.
像往常一样,这个main()方法定义了这个签名:
public static void main(String[] args) {
Run Code Online (Sandbox Code Playgroud)
所以它的返回类型是无效的.所以它应该意味着它不会返回任何价值.
但是为什么当它的执行正确终止时我将这条消息发送到IntelliJ控制台?
Disconnected from the target VM, address: '127.0.0.1:54090', transport: 'socket'
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud)
究竟代表退出代码0的是什么?
我认为这意味着程序已正确完成其执行而不会产生任何错误.
所以现在我有以下两个疑问:
如果确实如果我的main()方法返回void会发生什么?
如果我的应用程序以错误结束,如何返回不同的退出代码?是否存在标准退出代码值以结束错误?
TNX
JB *_*zet 30
VM退出时
System.exit(exitCode) 叫做在第一种情况下,退出代码为0.在第二种情况下,它是传递给exit()方法的退出代码.
不要忘记,即使你的main()方法返回,程序也会继续运行,直到没有非守护程序线程运行为止.并且在VM中运行的任何线程都可以选择明确退出.
退出代码0表示一切都按预期进行.您可以选择使用任何其他退出代码来向环境发出异常情况.
进程的退出代码是进程向操作系统报告的错误代码。
Java设计人员可以使main()方法返回,int以便JVM可以将此值作为进程退出代码报告给OS。但是他们决定让main无效,但提供可以使用来更新此代码的API System.exit(exitCode)。该解决方案的优点是程序可以决定在任何点和任何线程中退出,而不仅是在主方法和主线程中退出。
退出代码 0 表示它正常完成,这是所有进程的标准,而不仅仅是 java。该值不是从主方法(它是空的)返回,而是从 JVM 本身返回。
可以指定不同的值,例如System.exit(1)指示某些错误情况,然后程序停止。
| 归档时间: |
|
| 查看次数: |
21589 次 |
| 最近记录: |