プログラムに与えられた引数を解析するためにargs4jを使用しています。
これは、日付型の2つの引数を定義するコードです。ハンドラーは、指定された日付を解析し、日付が不正な場合は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メソッドを調べましたが、何も見つかりませんでした)。
解析できないパラメータを取得する方法はありますか?
よろしくお願いします。