我有一个Java程序,一次处理一个文件。该Java程序从包装脚本中调用,该脚本记录了Java程序的返回代码。有两种错误。预期错误和意外错误。在这两种情况下,我只需要记录它们。
我的包装器知道3种不同的状态。 0-OK,1-PROCESSING_FAILED,2-ERROR。
这是有效的方法吗?
这是我的方法:
enum ReturnCodes {OK,PROCESSING_FAILED,ERROR};
public static void main(String[] args)
{
...
proc.processMyFile();
...
System.exit(ReturnCodes.OK.ordinal());
}
catch (Throwable t)
{
...
System.exit(ReturnCodes.ERROR.ordinal());
}
private void processMyFile()
{
try
{
...
}catch( ExpectedException e)
{
...
System.exit(ReturnCodes.PROCESSING_FAILED.ordinal());
}
}
最佳答案
惯例是
零成功
警告的正数
错误的负数
其背后的历史是某些环境中的错误代码需要为8位值。按照惯例,对于严重错误,将设置高位(有效地将其设置为-127-> -1表示错误,将其设置为1-> 127表示警告)
当然,ANSI-C 99仅定义了两个宏,EXIT_SUCCESS
,分别为0和EXIT_FAILURE
,这是规范中未定义的其他一些数字。