無効なDateオブジェクトをキャッチするためのJavaのある種の例外はありますか?次の方法で使用しようとしていますが、どのタイプの例外を探すべきかわかりません。それはParseExceptionですか。
public boolean setDate(Date date) {
this.date = date;
return true;
}
無効なDateオブジェクトをキャッチするためのJavaのある種の例外はありますか?次の方法で使用しようとしていますが、どのタイプの例外を探すべきかわかりません。それはParseExceptionですか。
public boolean setDate(Date date) {
this.date = date;
return true;
}
指定したメソッドでは、単純な割り当てでは例外がスローされないため、例外をキャッチする方法はありません。あなたができることはおそらく以下の変更だけです:
if(date == null) return false;
しかし、それでも優雅ではありません。それが望ましい動作である場合は、何かを実行するthis.date
か、例外をスローすることをお勧めします。
あなたが本当に求めているのは次のいずれかです。
ParseException
DateFormat
-オブジェクトがしようとしたときにスローされますparse()
。これは、setメソッドの前に発生します。IllegalArgumentException
SimpleDateFormat
-コンストラクターによってスローされます。これも、setメソッドの前に発生します。無効なフォーマット文字列を指定したことを示します。あなたはそれらの1つ(おそらく#1)を捕まえたいと思うでしょう。ただし、メソッド呼び出しの前に発生する必要があります。Date
オブジェクトを取得すると、それはまたはnull
有効になります。
これは元の質問とは関係がない可能性があります。ただし、メソッド名は。であることに注意する必要がありますsetDate()
。何かが返ってくるように聞こえると思いますか?または、可能であれば、そこに戻るのは良い考えだと思いますboolean
か?IMO、このようなことをします、
public void setDate(Date date) {
this.date = date;
}
public boolean isDateNull() { // or something
return this.date == null;
}
この方法では、例外を気にする必要はありません。このメソッドを開始するまでに、日付はすでに作成されています。日付を解析している場合は、このコードの外部で行われているはずです。最善の方法は、日付がnullでないことを確認することです。
無効な日付の意味によって異なります。このようなメソッドシグネチャを提供するつもりでしたか?
public void setDate(String date) throws ParseException {
this.date = SomeDateFormat.getInstance().format(date);
}
そうでなければ、他の人が述べたように、Javaの日付オブジェクトをフィールドに割り当てるという単純な行為は、それがすでにDateのインスタンスであるか、nullであるため、例外ではありません。
文字列をjava.util.Dateに解析しようとしているだけの場合は、DateFormat、FastDateFormat(apache、スレッドセーフ)、またはJodaTimeを確認してください。