0

無効なDateオブジェクトをキャッチするためのJavaのある種の例外はありますか?次の方法で使用しようとしていますが、どのタイプの例外を探すべきかわかりません。それはParseExceptionですか。

public boolean setDate(Date date) {
        this.date = date;                
        return true;
    }
4

4 に答える 4

3

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

if(date == null) return false;

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

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

  1. ParseExceptionDateFormat-オブジェクトがしようとしたときにスローされますparse()。これは、setメソッドの前に発生します。
  2. IllegalArgumentExceptionSimpleDateFormat-コンストラクターによってスローされます。これも、setメソッドの前に発生します。無効なフォーマット文字列を指定したことを示します。

あなたはそれらの1つ(おそらく#1)を捕まえたいと思うでしょう。ただし、メソッド呼び出しの前に発生する必要があります。Dateオブジェクトを取得すると、それはまたはnull有効になります。

于 2010-03-25T03:51:02.167 に答える
3

これは元の質問とは関係がない可能性があります。ただし、メソッド名は。であることに注意する必要がありますsetDate()。何かが返ってくるように聞こえると思いますか?または、可能であれば、そこに戻るのは良い考えだと思いますbooleanか?IMO、このようなことをします、

public void setDate(Date date) {
    this.date = date;                
}

public boolean isDateNull() { // or something
    return this.date == null;                
}
于 2010-03-25T04:05:08.687 に答える
2

この方法では、例外を気にする必要はありません。このメソッドを開始するまでに、日付はすでに作成されています。日付を解析している場合は、このコードの外部で行われているはずです。最善の方法は、日付がnullでないことを確認することです。

于 2010-03-25T03:47:41.487 に答える
2

無効な日付の意味によって異なります。このようなメソッドシグネチャを提供するつもりでしたか?

public void setDate(String date) throws ParseException {
   this.date = SomeDateFormat.getInstance().format(date);
}

そうでなければ、他の人が述べたように、Javaの日付オブジェクトをフィールドに割り当てるという単純な行為は、それがすでにDateのインスタンスであるか、nullであるため、例外ではありません。

文字列をjava.util.Dateに解析しようとしているだけの場合は、DateFormat、FastDateFormat(apache、スレッドセーフ)、またはJodaTimeを確認してください。

于 2010-03-25T04:29:29.100 に答える