質問

Java には、無効な Date オブジェクトをキャッチするための何らかの例外がありますか?次のメソッドで使用しようとしていますが、どの種類の例外を調べればよいかわかりません。ParseExceptionですか。

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
役に立ちましたか?

解決

提供したメソッドでは、単純な代入では何もスローされないため、例外をキャッチする方法はありません。あなたができることはおそらく以下の変更だけです。

if(date == null) return false;

しかし、それでも優雅ではありません。何かをしたいかもしれません this.date または、それが望ましい動作である場合は例外をスローします。

あなたが本当に求めているのは次のいずれかです。

  1. ParseException - によって投げられました DateFormat しようとしたときに反対する parse(), 、これは設定メソッドの前に発生します
  2. 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。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top