我有一个字符串形式的日期,我正在使用 SimpleDateFormat
验证它。
我有以下代码:
public boolean validateDate(String date) {
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
format.setLenient(false);
try {
Date dt = format.parse(date);
logger.info("DT:\t" + dt.toString());
String actDate = format.format(dt);
logger.info("actDate:\t" + actDate);
return actDate.equals(date);
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
现在,如果我发送一个不具有相同格式的值,我的格式化程序会期望它(例如29-03--2008)或具有< strong>不正确的闰年(例如29-02-2007),我得到一个java.text.ParseException: Unparseable date:
我希望能够知道到底是什么导致了问题,以便我可以将适当的消息发送回调用该方法的人。但是,当异常发生时,我无法知道到底是什么导致了它(是否是无效的格式或不正确的值或其他原因)。
我可以使用 RegEx 检查格式是否正确,但是 SimpleDateFormat
已经在内部处理该检查。所以我不想再做同样的事情了。
有什么方法可以让我知道是什么原因导致了异常吗?
最佳答案
我怀疑日期格式错误的方式几乎有无数种。总的来说,如果有足够的时间,我们的代码可能会经历所有这些。
您可能会发现最简单(最好?)的方法就是在错误消息中包含格式错误的日期,以便用户可以看到他们做错了什么。
编辑:请注意转义输入的值,以免在系统中引入 XSS 或类似漏洞。
关于java - 如何找出 SimpleDateFormat 中解析异常的实际原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44035779/