关于C / C ++,main()必须始终返回一个整数(零表示成功,非零表示失败)。 我可以理解这一点,因为程序运行它变成一个进程,每个进程都应该有一个退出状态,我们通过echo $获得? 在进程结束后从shell中获取。
现在我不明白为什么main方法不能在Java中返回任何内容? 是否与程序在JVM上运行并且JVM进程可以返回以返回退出状态这一事实有什么关系?
请澄清。
谢谢,
罗杰
如果单线程java应用程序的main方法终止,则应用程序将以退出代码0终止。如果您需要另一个退出代码,可能表示错误,您可以放置
System.exit(yourNumberHere);
代码中的任何位置(特别是在主方法之外)。
这对于multithreading应用程序是不同的,在这些应用程序中,您必须从外部使用 kill -9
内部的System.exit
来停止JVM。
这是一个快速示例,其中main的终止不会停止应用程序(典型的服务或守护程序行为):
public static void main(String args[]) { Thread iWillSurvive = new Thread(new Runnable() { public void run() { while(true) { // heat the CPU } } }); iWillSurvive.start(); }
备注:当然,线程将在它的run方法(或主线程的主方法)终止时终止。 在这种情况下,当所有线程都已终止时,JVM将以退出代码0终止(这将我们带回到初始问题)。 希望大家现在开心。
multithreading设计时已经很常见了,java(按设计)说“再见”这个想法,当’main’返回程序时就完成了。 这就是没有回报价值的原因。 正如其他人所说当你想用退货代码退出时使用System.exit
。
为此目的,Java有System.exit(int)
。
基本上,如果程序流到达main方法的末尾,Java程序将以退出代码0退出(粗略地说;它通过Swing和线程变得更奇怪,但这应该足够了)。
如果你调用System.exit()
某处(实际上是任何地方)或Runtime.getRuntime().exit()
这是System.exit()
调用的,那么程序会立即和过早地结束。
你System.exit(0)
它就像Java会在main方法的最后隐式添加System.exit(0)
,但可能会有更微妙的差异。 不过,我现在还没有关于JVM关闭的完整细节。
一个小问题 – 在C ++中,你不需要从main返回任何东西:
int main() { }
是一个完全合法的C ++程序 – 它就像你有:
return 0;
作为主要的最后一个陈述。
退出值对于bash脚本或命令行操作等脚本非常有用。 所以在这些情况下使用System.exit()。
我怀疑C / C ++返回int的原因是因为这是在那些语言中指示函数/方法/程序成功/失败的惯例。
通过在Java中引入exception,而不是成功的零和失败的非零值,它使用exception层次结构来表示失败,并且成功只是在没有抛出exception的情况下,因此无需返回值。
我现在写的大多数程序都有某种forms的用户界面,而且它们可以很有用地返回,甚至不太可能每个人都需要这些状态代码。
那么为什么强迫所有程序返回一个呢? 正如其他人所说,如果你愿意,你可以返回一个状态代码……
可能是因为System.exit(int exitCode)
没有返回值。
以上就是c/c++开发分享主要function不返回任何东西。 为什么?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/549493.html