我有一个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());
}
}
答案 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块中。我喜欢使用枚举来固定常量。