Java Date 例外処理 try catch
-
22-09-2019 - |
質問
Java には、無効な Date オブジェクトをキャッチするための何らかの例外がありますか?次のメソッドで使用しようとしていますが、どの種類の例外を調べればよいかわかりません。ParseExceptionですか。
public boolean setDate(Date date) {
this.date = date;
return true;
}
解決
提供したメソッドでは、単純な代入では何もスローされないため、例外をキャッチする方法はありません。あなたができることはおそらく以下の変更だけです。
if(date == null) return false;
しかし、それでも優雅ではありません。何かをしたいかもしれません this.date
または、それが望ましい動作である場合は例外をスローします。
あなたが本当に求めているのは次のいずれかです。
ParseException
- によって投げられましたDateFormat
しようとしたときに反対するparse()
, 、これは設定メソッドの前に発生します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 に変換しようとしている場合は、次を見てください。 日付形式, 、FastDateFormat (Apache、スレッド セーフ)、または Joda Time。