2016-09-07 125 views
-2

我嘗試將字符串轉換爲java上的日期。我閱讀並嘗試從這個網站"Java Date and Calendar examples"的例子,但我仍然無法編譯和運行它。Java:錯誤解析日期字符串到日期對象

這是我的代碼。

package javaapplication5; 

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Locale; 

public class JavaApplication5 { 

    public static void main(String[] args) { 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); 
     String dateInString = "31-08-1982 10:20:56"; 
     Date date = sdf.parse(dateInString); 
     System.out.println(date); 
    } 

} 

我得到這個錯誤。

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.text.ParseException; must be caught or declared to be thrown 

我錯過或做錯了什麼?謝謝你的幫助。

+0

是錯誤是如此的清晰,無論你需要將'sdf.parse()'放在try catch或use throws子句中。 –

回答

1

的問題是,java.text.ParseExceptionchecked exception

checked異常是一種例外,那必須是捕獲或在其被拋出

所以方法聲明中...你可能會在throws列表聲明它

public static void main(String[] args) throws ParseException { 
    /* ... */ 
} 

還是應該妥善處理這

public static void main(String[] args) { 
    try { 
     Date date = sdf.parse(dateInString); 
    } catch (ParseException e) { 
     // do proper thing here like try another 
     // format or log/rethrow/wrap exception 
    } 
} 
+0

感謝您包括這兩種方式可以完成。因爲它揭示了編譯錯誤的原因,所以你很快就會解釋檢查的異常。 – byxor

+1

@BrandonIbbotson在此向您致謝:) – vsminkov

+1

@BrandonIbbotson標記爲重複的會更好,但是誰會對一些容易養殖的聲譽說「不」,對吧? :P – Tom

0

只需在try catch塊中添加代碼即可。

try { 
//parse code 
} 
catch (ParseException e) { 
//handling exceptions 
} 
0

儘量把所有的代碼在一個try/catch塊

try{ 
    // your code here. 
}catch(Exception e){ 
    e.printStackTrace(); 
} 
+2

這會起作用,但它會捕獲所有異常,這不是一個好主意。 – byxor

+0

是的,如果你想捕捉解析異常,你可以用catch子句中的「ParseException」替換「Exception」。 –

0

添加try-catch塊這樣的:

try 
{ 
    //...Code.... Mainly below: 
    Date date = sdf.parse(dateInString); 
} catch (ParseException e) 
    //Or any superclass, such as RuntimeException, 
    //although use superclass ONLY to be generic, not otherwise, such as 
    //if you want to handle all exceptions the same way. 
{ 
    //...Handler Code... 
} 
+0

編輯答案@Tom –

+1

@Tom再次編輯 –

0
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); 
      String dateInString = "31-08-1982 10:20:56"; 
      Date date = null; 
      try { 
       date = sdf.parse(dateInString); 
      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      System.out.println(date); 
+0

解釋你的答案 – Tom