簡體   English   中英

Java Date異常處理嘗試捕獲

[英]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進行操作,或者如果需要的話拋出異常。

您真正要尋找的是:

  1. ParseExceptionDateFormat對象在嘗試parse()時拋出,該事件將在您的set方法之前發生
  2. IllegalArgumentExceptionSimpleDateFormat構造函數引發,同樣會在您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM