throws是將異常拋出,后續代碼不再執行。而try…catch是將異常拋出,並且要繼續執行后面的代碼(try{內部代碼},但是try內部代碼不再執行,而是跳到外面的代碼繼續執行)。
1.try……catch
package com.oracle; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo01Exception { /*Exception:編譯期間異常,進行編譯(寫代碼的過程) * runtimeException:運行期異常,java程序運行過程中出現的問題 *Error:錯誤(出現的錯誤無法調試,必須修改源代碼) * */ public static void main(String[] args){ //*Exception:編譯期間異常,進行編譯(寫代碼的過程) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化日期對象。 Date date =null; try { date = sdf.parse("1999-0909");
System.out.println("如果上面出現錯誤,我不會執行……"); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }//把字符串格式的日期,解析為Date格式日期 System.out.println(date); System.out.println("kkkkk"); } }
執行結果:
java.text.ParseException: Unparseable date: "1999-0909"(無法解釋的錯誤。) at java.text.DateFormat.parse(DateFormat.java:357) at com.oracle.Demo01Exception.main(Demo01Exception.java:18) null kkkkk
2.throws
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Demo01Exception { /*Exception:編譯期間異常,進行編譯(寫代碼的過程) * runtimeException:運行期異常,java程序運行過程中出現的問題 *Error:錯誤(出現的錯誤無法調試,必須修改源代碼) * */ public static void main(String[] args) throws ParseException{ //*Exception:編譯期間異常,進行編譯(寫代碼的過程) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化日期對象。 Date date =null; date = sdf.parse("1999-0909"); //把字符串格式的日期,解析為Date格式日期 System.out.println(date); System.out.println("kkkkk"); } }
執行結果:
Exception in thread "main" java.text.ParseException: Unparseable date: "1999-0909" at java.text.DateFormat.parse(DateFormat.java:357) at com.oracle.Demo01Exception.main(Demo01Exception.java:17)