首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >main()方法的Java应用程序退出代码到底是如何工作的?

main()方法的Java应用程序退出代码到底是如何工作的?
EN

Stack Overflow用户
提问于 2015-02-26 17:10:30
回答 3查看 30.9K关注 0票数 25

对于一个简单的命令行Java应用程序,我有以下疑虑。

因此,我有一个命令行应用程序,它由在类中定义的main()方法启动。与往常一样,此main()方法使用以下签名定义:

代码语言:javascript
复制
public static void main(String[] args) {

它的返回类型是void,,这意味着它不会返回任何值。但是,当它的执行正确终止时,我在IntelliJ控制台中得到以下消息。

代码语言:javascript
复制
Disconnected from the target VM, address: '127.0.0.1:54090', transport: 'socket'

Process finished with exit code 0

exit code 0?的确切含义是什么我认为这意味着程序已经正确地完成了它的执行,没有引起任何错误。

所以现在我有以下两个疑问:

如果是真的,为什么我的main()方法返回void

  • How,如果我的应用程序以错误结束,我可以返回不同的退出代码吗?

是否有以错误结尾的标准退出代码值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-26 17:14:58

虚拟机在下列情况下退出

当所有非守护程序线程停止运行时,or

  • System.exit(exitCode)被称为

在第一种情况下,退出代码为0。在第二种情况下,它是传递给exit()方法的退出代码。

不要忘记,即使main()方法返回,程序也会继续运行,直到不再运行非守护进程线程。并且在VM中运行的任何线程都可以选择显式退出。

退出代码0表示一切按预期进行。您可以选择使用任何其他退出代码向环境发出异常情况的信号。

票数 37
EN

Stack Overflow用户

发布于 2015-02-26 17:17:11

进程的退出代码是进程向操作系统报告的错误代码。

Java设计者可以让main()方法返回int,这样虚拟机就可以将这个值作为进程退出代码报告给OS。但他们决定让main无效,但提供可以使用System.exit(exitCode)更新此代码的应用程序接口。这种解决方案的优点是,程序可以决定在任何点在任何线程中退出,而不仅仅是在main方法和主线程中退出。

票数 9
EN

Stack Overflow用户

发布于 2015-02-26 17:18:25

退出代码为0表示正常完成,这是所有进程的标准,而不仅仅是java。值不是从main方法(它是void)返回的,而是从JVM本身返回的。

可以指定一个不同的值,例如System.exit(1)来指示某些错误条件,然后程序停止。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28738307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档