Java 中是否存在某种异常来捕获无效的 Date 对象?我正在尝试在以下方法中使用它,但我不知道要查找哪种类型的异常。它是 ParseException。
public boolean setDate(Date date) {
this.date = date;
return true;
}
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
那里是个好主意吗?IMO,做这样的事情,
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。