我正在使用 args4j 来解析给我的程序的参数。
这是我定义 2 个 Date 类型参数的代码。处理程序只解析给定的日期,如果日期格式错误,则抛出 CommandLineException。
@Option(name="-b", metaVar="<beginDate>", handler=DateOptionHandler.class, usage="...")
private Date beginDate;
@Option(name="-e", metaVar="<endDate>", handler=DateOptionHandler.class, usage="...")
private Date endDate;
如果它是引发异常的 beginDate 或 endDate,我需要能够返回不同的代码(int 值)。
目前,我的主要方法如下所示:
CmdLineParser parser = new CmdLineParser(this);
parser.setUsageWidth(120);
try {
parser.parseArgument(args);
} catch (CmdLineException e) {
/* Print usage if an error occurs during the parsing */
System.err.println(e.getMessage());
System.err.println("Usage : java LaunchProgram [options]");
e.getParser().printUsage(System.err);
/* What I need to do : */
if(optionWhichThrewTheException.equals("-b") return 2;
if(optionWhichThrewTheException.equals("-e") return 3;
/* Other arguments */
return -1;
}
但我不知道如何知道哪个参数引发了异常(我查看了 CmdLineException 方法,但什么也没找到)。
有没有办法获取无法解析的参数?
提前感谢您的帮助。