Java应用程序返回代码

时间:2010-05-05 22:28:55

标签: java exception

我有一个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());
    }
}

4 个答案:

答案 0 :(得分:4)

惯例是

  • 成功为零
  • 警告的正数
  • 错误的负数

背后的历史是某些环境中的错误代码需要是8位值。对于按惯例的严重错误,设置高位(有效地使其为-127 - > -1表示错误,1 - > 127表示警告)

当然,ANSI-C 99只定义了两个宏EXIT_SUCCESS,它们是0和EXIT_FAILURE,这是规范中未定义的其他数字。

答案 1 :(得分:1)

是的,它没有错。 个人而言,我不会为Enum而烦恼,一些功能就足够了。

答案 2 :(得分:0)

看起来很好。您的成功代码为0尤其重要,因为这是约定,脚本环境将专门检查这一点,并假设非零值是错误。

答案 3 :(得分:0)

看起来不错。您可以将OK语句放在finally块中。我喜欢使用枚举来固定常量。