0

我的代码希望它包围 bt 一个 try-catch。我做到了,但它继续出现错误

Caused by: java.lang.NullPointerException at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1001) at java.text.DateFormat.parse(DateFormat.java:624)

这是我的代码:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
try{
    Date date = sdf.parse(dataUltima);
    dataUltima = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);

} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
4

4 回答 4

4

您的代码只是ParseExceptioncatch ,因此 catch 子句不会处理 NullPointerException 。我的猜测sdf是当这段代码执行时要么为空,要么dataUltima当它被传递到 parse 方法时为空(我不完全记得如何parse()响应空参数)。

您可以通过多种方式解决此问题。在执行 try 块之前检查导致异常的变量是否为 null,NullPointerException为您的 try/catch 添加一个 catch,或者使该ParseException块捕获一个更通用的异常(如Exception)来处理这两种情况(尽管我个人不推荐它)。

于 2013-07-17T13:55:23.637 回答
0

当您尝试执行此操作时,dataUltima 可能为 null,Date date = sdf.parse(dataUltima);而您的捕获仅得到ParseException. 如果要捕获所有错误,请更改ParseExceptionException.

于 2013-07-17T13:55:48.253 回答
0

那是 NullPointerException,您的代码只捕获 ParseException。检查您的日期变量,我认为它为空。你可以捕捉这个异常做类似的事情

try{
    Date date = sdf.parse(dataUltima);
    dataUltima = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);
} catch (ParseException e) {
         // TODO Auto-generated catch block
   e.printStackTrace();
} catch (NullPointerException e) {
        // TODO: handle exception

}
于 2013-07-17T14:01:30.600 回答
0
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm");
try{
    Date date = sdf.parse(dataUltima);
    dataUltima = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

在第 624 行寻找空指针的原因,并在其类的任何地方引用 dataUltima ..?

于 2013-07-17T14:02:00.660 回答