【发布时间】:2010-03-15 10:25:49
【问题描述】:
如果我用 Java 编写了一个程序,我如何知道我的程序是正常终止还是正常退出?
【问题讨论】:
-
终止后(认为不可能)?还是在关闭期间?
标签: java process terminate exit-code
如果我用 Java 编写了一个程序,我如何知道我的程序是正常终止还是正常退出?
【问题讨论】:
标签: java process terminate exit-code
我在这里猜测了一下,因为你的问题有点含糊。但我假设您谈论的是找出在您的程序中该程序在上次运行时是否正常终止。
如果您有配置目录或文件,请在程序启动时在此处留下注释,并在进程正常退出时删除该注释。如果您的程序启动时该注释仍然存在,则说明另一个实例仍在运行(然后您需要单独检查)或者它没有正常终止。
【讨论】:
JVM 在程序终止时返回一个整数退出代码,0 表示程序正确终止,非零值通常表示错误情况。
如果你的程序正常结束(即 main 方法返回没有抛出异常),那么 JVM 将返回 0,否则,如果抛出异常但未被捕获,则 JVM 将返回一个非 0错误代码。
您也可以通过System.exit(int) 方法自行设置错误代码。这会导致 JVM 立即终止并返回指定的错误代码。
假设您使用的是基于 Windows 的计算机,那么您可以看到通过回显 %ERRORLEVEL% 属性返回的错误代码。
例如假设你有一个 Main 类,你可以看到如下错误代码:
C:\>java Main
C:\>echo %ERRORLEVEL%
0
如果您随后将 main 更改为调用 System.exit(1),那么错误级别将如下所示:
C:\>echo %ERRORLEVEL%
1
【讨论】: