0

呼び出しられた変数に文字列を格納し、メソッドをdataRange使用Interval.parse()してIntervalオブジェクトを取得しました。

私の目標は、その文字列が正しい形式であるかどうかを確認し、正しい形式DateFormatExeptionでない場合はスローすることです。

final Interval validDateRange = Interval.parse(dateRange);

正しい形式の文字列であれば、解析関数は例外をスローしないようです。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

Interval.parse()DateFormatException提供された文字列が無効な場合、はスローしません。代わりに . をスローしIllegalArgumentExceptionます。 DateFormatExceptionJava または JodaTime に組み込まれている例外クラスではないため、自分で作成する必要があります (これは非常に簡単です)。

をスローしたい場合はDateFormatException、呼び出しを try ブロックでラップして、次のようにします。

final Interval validDateRange = null
try{
    validDateRange = Interval.parse(dateRange);
catch(InvalidArgumentException e){
    throw new DateFormatException("date format not valid",e);
}

ただしInvalidArgumentException、文字列が null の場合、日付が正しくフォーマットされているが範囲が間違っている場合 (たとえば、終了日が開始日より前) にもスローされます。例外メッセージは何が問題なのかを教えてくれますがDateFormatException、これらすべてのケースでa をスローするのは正しくないかもしれません

于 2013-01-14T17:52:47.603 に答える