解析日期时的java.lang.NullPointerException
从我的rest客户端发送请求时出现异常解析日期时的java.lang.NullPointerException,java,web-services,hibernate,Java,Web Services,Hibernate,从我的rest客户端发送请求时出现异常 这是我的DTO课 private String fromDate; private String toDate; public String getFromDate() { return fromDate; } public void setFromDate(String fromDate) { this.fromDate =
这是我的DTO课
private String fromDate;
private String toDate;
public String getFromDate() {
return fromDate;
}
public void setFromDate(String fromDate) {
this.fromDate = fromDate;
}
public String getToDate() {
return toDate;
}
public void setToDate(String toDate) {
this.toDate = toDate;
}
请求数据包是这种格式,如何以这种格式发送日期,但它将作为字符串
{
" toDate": "2014/07/01",
" fromDate ": "2014/05/01",
" imeiNo ": "1234567890",
" phoneNumber ": 1234567890,
" emailId ": ""
}
下面是我在helper类中转换的方法
private static Timestamp convertStringDateToTimestamp(String stringDate)
{
DateFormat formatter;
Date date = null;
formatter = new SimpleDateFormat("yy-MM-dd");
try {
date = (Date) formatter.parse(stringDate);
}
catch (ParseException e) {
e.printStackTrace();
}
java.sql.Timestamp timeStamp = new Timestamp(date.getTime());
return timeStamp;
}
但是在我的服务器中获取此异常
java.lang.NullPointerException at org.omnypay.mobileapp.webservices.helper.TransactionHelper.convertStringDateToTimestamp(Tra
请帮助我如果格式化程序没有将字符串解析为日期,
date
变量为null
,您无法调用date.getTime()
在该行之前添加空检查
或
正如Jon所说,您需要更好地处理异常。打印stacktrace后抛出异常,或者返回一个值,以便程序不会继续执行方法的其余部分。您的日期将
/
作为分隔符,但您正在格式化程序中将-
定义为分隔符。而且你有一整年的时间,比如2014年,而不是14年
formatter = new SimpleDateFormat("yyyy/MM/dd");
除非你指出代码中的行,否则所有的工作都是为了猜测,然而,这
java.sql.Timestamp Timestamp=新的时间戳(date.getTime())
。。。这是一个潜在的问题。如果由于某种原因,字符串
未能被解析,那么日期
仍将是空
您可能首先得到了一个解析异常
,实际上您忽略了它。不要那样做。如果您得到一个ParseException
,显然无法继续,那么为什么您只是打印堆栈跟踪并忽略它呢?您使用的格式,yy-MM-dd
和日期字符串的格式是错误的2014/07/01
,格式应该更像yyyy/MM/dd
,这将导致ParseException
和date
将null
。您需要将调试语句添加到代码中…Date=null;在这种情况下,我必须采取什么,因为我是新的this@JonSkeet当然,假设他想在那里中断。我不确定在这种情况下“中断”是什么意思,但是让异常冒泡出来,或者在catch
块中返回适当的值,都可以避免这个问题。@JonSkeet我想。我已经修改了答案。