[英]Java Date exception handling try catch
Java中是否存在某種異常來捕獲無效的Date對象? 我正在嘗試在以下方法中使用它,但是我不知道要尋找哪種類型的異常。 它是一個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)。 但是它必須在您的方法調用之前發生。 擁有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日期對象分配給字段的簡單動作不應是例外,因為它要么是Date的實例,要么為null。
如果您只是嘗試將字符串解析為java.util.Date,請查看DateFormat ,FastDateFormat(Apache,線程安全)或Joda Time。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.