【问题标题】:why the ParseException appears when use SimpleDateFormat [duplicate]为什么使用 SimpleDateFormat 时会出现 ParseException [重复]
【发布时间】:2016-12-09 10:40:42
【问题描述】:

我用eclipse写了下面的代码:

String d = "2014-6-1 21:05:36";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
Date date =sdf.parse(d);        
System.out.print(date);

第 4 行抛出 Unhandled exception type ParseException.

但如果我写:

try {
  String d = "2014-6-1 21:05:36";   
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
  Date date =sdf.parse(d);      
  System.out.print(date);
} catch(ParseException e) {
  e.printStackTrace();
  System.out.print("you get the ParseException");
}

或者在main方法的开头加上throws ParseException

public static void main(String[] args) throws ParseException {
  String d = "2014-6-1 21:05:36";
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        
  Date date =sdf.parse(d);      
  System.out.print(date);
}

它们都运行良好...我的代码有什么问题?我在 catch 块中使用了 printStackTrace() 方法,但是为什么我看不到 ParseException?

【问题讨论】:

  • 它告诉您 SimpleDateFormat 的解析表明它可能会抛出该异常。这并不意味着它做到了。编译器希望您处理它,或者通过将您的方法标记为可能是此异常的来源来确认它是可能的。
  • 您在案例 2 中使用了不同的格式,即您打印异常的格式。
  • 我很确定你的第三段摘录没有效果很好。

标签: java parseexception


【解决方案1】:

这不是关于你实际上得到一个例外。但是您的 String 可能格式错误(事实并非如此)。在这种情况下,你会得到一个例外。

因此编译器希望您处理该异常。你要么重新扔它,要么抓住它。但是:您的代码实际上不会出现异常。以防万一出现异常。

【讨论】:

    【解决方案2】:

    在任何IDE(集成开发环境)中,编辑器都会显示编译时无法解决的编译类型错误。

    您在sdf.parse(d);观察到的IDE行为意味着它可以在运行时抛出解析异常,因此您必须相应地处理它。否则程序会崩溃。

    在您的第二个代码 sn-p 中,它会在发生时捕获解析异常并向您显示异常 e.printStackTrace(); 以供您记录并且代码不会崩溃,即 exit(0)exit(1) 错误,@987654321 @

    虽然在你的最后一个代码 sn-p 中,方法已被清除,它可能会引发异常,所以如果它从任何其他来源调用,则应该处理,比如 try catch。

    您可以使用这两种解决方案中的任何一种,这只是您的选择。

    更多

    下面是SimpleDateFormat中的方法签名

    public Date parse(String source) throws ParseException
    

    所以this throws表示当这个方法被调用时必须处理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多