每当Perl,Python,C ++或Tcl程序因未处理的异常而暂停时,这些语言运行时都会注意为该过程注册一个非零的退出代码。如果基于Eclipse的程序在启动过程中失败,则它们也会返回1。java.exe
但是,由标准运行的程序无论终止多么突然,都会很高兴地返回零,除非程序System.exit()
使用退出值进行调用。甚至AssertionFailedError
或UnsatisfiedLinkError
作为成功退出被报告回调用程序。
当然,并非所有系统都具有程序返回码,但是Unix和Windows非常重要,足以保证java.lang.Process.exitValue()
子进程的运行。他们还不保证为父流程遵守约定吗?
这是语言设计上的缺陷还是仅仅是实现上的缺陷?是否有争论说这是个好主意?
不知道这是否更适合StackOverflow ...不过只是一个意见。
—
gablin
@gablin Mmm,的确,我开始在SO上写这个问题,然后改变了主意并将其张贴在这里。
—
詹姆斯