我有一个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,这是规范中未定义的其他一些数字。

10-04 12:23
查看更多