Java日期异常处理try-catch

Java日期异常处理try-catch,java,exception-handling,formatting,parseexception,Java,Exception Handling,Formatting,Parseexception,Java中是否存在捕获无效日期对象的某种异常?我试图在下面的方法中使用它,但我不知道要查找什么类型的异常。这是一个例外 public boolean setDate(Date date) { this.date = date; return true; } 在这种方法中,不需要担心异常。进入此方法时,日期已创建。如果您正在解析一个日期,它将在这段代码之外完成。您最好确保日期不为null。在您提供的方法中,无法捕获异常,因为

Java中是否存在捕获无效日期对象的某种异常?我试图在下面的方法中使用它,但我不知道要查找什么类型的异常。这是一个例外

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

在这种方法中,不需要担心异常。进入此方法时,日期已创建。如果您正在解析一个日期,它将在这段代码之外完成。您最好确保日期不为null。

在您提供的方法中,无法捕获异常,因为简单赋值不会引发任何异常。您所能做的可能只是以下更改:

if(date == null) return false;
但即使这样也不优雅。您可能希望对this.date执行某些操作,或者如果这是所需的行为,则抛出异常

你真正想要的是:

ParseException-DateFormat对象尝试解析时抛出,这将发生在set方法之前 IllegalArgumentException-由SimpleDataFormat构造函数引发,它同样会发生在set方法之前。表示您提供的格式字符串无效。
你可能想抓住其中的一个。但它必须在方法调用之前发生。一旦有了日期对象,它要么为空,要么有效。

这可能与原始问题无关。但是您必须注意方法名,即setDate。你觉得它听起来会有回报吗?或者,如果可能的话,那么您认为在那里返回布尔值是个好主意吗?依我看,这样做

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,请查看FastDateFormat apache、线程安全或Joda Time