java基礎(12)---異常

1、throws和throw

用戶程序自定義的異常和應用程序特定的異常,必須藉助於 throws 和 throw 語句來定義拋出異常。html

區別:程序員

  一、概念函數

  • throws E1,E2,E3只是告訴程序這個方法可能會拋出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2,E3多是該函數體產生的。
  • throw則是明確了這個地方要拋出這個異常。

二、位置spa

  • throw語句用在方法體內,表示拋出異常,由方法體內的語句處理。
  • throws語句用在方法聲明後面,表示再拋出異常,由該方法的調用者來處理。

  三、通俗說法:code

  • throws說明你有那個可能,傾向。
  • throw的話,那就是你把那個傾向變成真實的了。

格式:htm

1.1   throw是語句拋出一個異常。對象

語法:throw (異常對象);blog

         throw e;get

 

1.2   throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)虛擬機

語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{......}

            public void doA(int a) throws Exception1,Exception3{......}

 

例子:

 void doA(int a) throws IOException,{
           try{
                 ......
           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("出錯了!");
           }
           if(a!=b)
              throw new  Exception3("自定義異常");
}

//代碼塊中可能會產生3個異常,(Exception1,Exception2,Exception3)。

//若是產生Exception1異常,則捕獲以後再拋出,由該方法的調用者去處理。

//若是產生Exception2異常,則該方法本身處理了(即System.out.println("出錯了!");)。因此該方法就不會再向外拋出Exception2異常了,void doA() throws Exception1,Exception3 裏面的Exception2也就不用寫了。

//而Exception3異常是該方法的某段邏輯出錯,程序員本身作了處理,在該段邏輯錯誤的狀況下拋出異常Exception3,則該方法的調用者也要處理此異常。

摘自:http://www.javashuo.com/article/p-rrizgspf-bo.html

 

2、try和catch

使用 try 和 catch 關鍵字能夠捕獲異常。

 try-catch和throws的區別:

  •     try-catch : 在當前位置處理異常
  •     throws    : 向上拋出異常,能夠無限向上拋出,直到拋給main方法,main方法就拋給JVM虛擬機去解決

即好比在3個類中,第3個類出現異常,可向上拋給第二個類,第二個類若是不想解決,可繼續拋給第一個類中去解決,而後在第一個類中(調用第三個類中方法會出現異常)==》就使用try-catch解決異常


至關於throws能夠向上指定拋到某一個類裏面去集合解決異常(使用try-catch解決異常),而try-catch是直接處理異常

3、異常:

IllegalArgumentException:代表向方法傳遞了一個不合法或不正確的參數

相關文章
相關標籤/搜索