根据评论修改后
不知道为什么,我在尝试在Java中解析Date
和String
格式时,好像随机地会出现这个异常。
以下是我测试用的代码片段:
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
for(...){
...
System.out.println("Before parsing: [" + lastEntryDate + "]");
Date date = formatter.parse(lastEntryDate);
System.out.println("After parsing: [" + date + "]”);
}
输出结果如下:
Before parsing: [Sun Aug 07 22:45:30 EST 2011]
After parsing: [Sun Aug 07 22:45:30 EST 2011]
Before parsing: [Sun Aug 07 22:45:31 EST 2011]
After parsing: [Sun Aug 07 22:45:31 EST 2011]
Before parsing: [Sun Aug 07 22:45:31 EST 2011]
After parsing: [Sun Aug 07 22:45:31 EST 2011]
Before parsing: [Sun Aug 07 22:45:31 EST 2011]
After parsing: [Sun Aug 07 22:45:31 EST 2011]
Before parsing: [Sun Aug 07 22:45:31 EST 2011]
After parsing: [Sun Aug 07 22:45:31 EST 2011]
Before parsing: [Sun Aug 07 22:45:31 EST 2011]
java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Long.parseLong(Long.java:431)
at java.lang.Long.parseLong(Long.java:468)
at java.text.DigitList.getLong(DigitList.java:177)
at java.text.DecimalFormat.parse(DecimalFormat.java:1298)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1936)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1312)
at java.text.DateFormat.parse(DateFormat.java:335)
at proj01.servicebus.ServiceBus.writeFeedEntry(ServiceBus.java:211)
at proj01.servicebus.ServiceBus.writeFeedEntries(ServiceBus.java:243)
at proj01.servicebus.ServiceBus.access$1(ServiceBus.java:241)
at proj01.servicebus.ServiceBus$1.call(ServiceBus.java:84)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
问题是:
- 有时候解析失败了?!(例如,它会给出00:00:00)
- 有时候会抛出异常?!
- 这个问题似乎是随机的!
writeFeedEntry
的第211行是什么样子的? - Jon Skeetformatter.parse()
方法...但我认为问题可能是Stephen建议的,因为我的代码确实涉及多个线程。 - LarrySimpleDateFormat formatter
,然后为每个线程使用它... - Larry