Java中是否存在某種異常來捕獲無效的Date對象?我試圖在下面的方法中使用它,但我不知道尋找什麼類型的異常。它是一個ParseException。Java Date異常處理try catch
public boolean setDate(Date date) {
this.date = date;
return true;
}
Java中是否存在某種異常來捕獲無效的Date對象?我試圖在下面的方法中使用它,但我不知道尋找什麼類型的異常。它是一個ParseException。Java Date異常處理try catch
public boolean setDate(Date date) {
this.date = date;
return true;
}
在您提供的方法中,無法捕獲異常,因爲沒有簡單的賦值操作會拋出異常。你所能做的只是下面的變化:
if(date == null) return false;
但即使這不是優雅。你可能想要用this.date
做一些事情,或者如果這是所需的行爲就拋出異常。
你真正追求的是兩種:
ParseException
- 由SimpleDateFormat
構造拋出,再 - 由當它試圖parse()
一個DateFormat
對象,這將您所設定的方法之前發生IllegalArgumentException
拋出它會在你設置的方法之前發生。表示您提供的格式字符串無效。你想趕上其中一個(可能#1)。但在之前必須發生您的方法調用。一旦你有一個Date
對象,它可以是null
或有效。
在這種方法中,不需要擔心異常。該日期已經在您進入此方法時創建。如果你正在解析一個日期,它會在這段代碼之外完成。最好的辦法是確保日期不爲空。
這可能與原始問題沒有關係。但是您必須注意方法名稱,它是setDate()
。你覺得它聽起來像會回報什麼嗎?或者如果可能的話,那麼你認爲在那裏返回boolean
是個好主意嗎?國際海事組織,做這樣的事情,
public void setDate(Date date) {
this.date = date;
}
public boolean isDateNull() { // or something
return this.date == null;
}
這取決於你的意思是一個無效的日期。你是否想給我們一個看起來更像這樣的方法簽名?
public void setDate(String date) throws ParseException {
this.date = SomeDateFormat.getInstance().format(date);
}
否則,別人說指定Java日期對象的場的簡單的行爲,因爲它要麼是日期的一個實例已經或null不應該例外。
如果您只是想將字符串解析爲java.util.Date,請查看DateFormat,FastDateFormat(apache,線程安全)或Joda Time。