【Java面試題】22 JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別表明什麼意義?在try塊中能夠拋出異常嗎?

throws是獲取異常
throw是拋出異常
try是將會發生異常的語句括起來,從而進行異常的處理,
catch是若是有異常就會執行他裏面的語句,
而finally不管是否有異常都會進行執行的語句。程序員

throw和throws的詳細區別以下:函數

throw是語句拋出一個異常。
語法:throw (異常對象);
         throw e;spa

throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
語法:[(修飾符)](返回值類型)(方法名)([參數列表])[throws(異常類)]{......}
            public void doA(int a) throws Exception1,Exception3{......}code

1. 區別對象

 

throws是用來聲明一個方法可能拋出的全部異常信息,而throw則是指拋出的一個具體的異常類型。此外throws是將異常聲明可是不處理,而是將異常往上傳,誰調用我就交給誰處理。blog

2.分別介紹it

  throws:用於聲明異常,例如,若是一個方法裏面不想有任何的異常處理,則在沒有任何代碼進行異常處理的時候,必須對這個方法進行聲明有可能產生的全部異常(其實就是,不想本身處理,那就交給別人吧,告訴別人我會出現什麼異常,報本身的錯,讓別人處理去吧)。io

格式是:方法名(參數)throws 異常類1,異常類2,.....class

 

舉例:語法

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

複製代碼
如: void doA(int a) throws Exception1,Exception3{
           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,則該方法的調用者也要處理此異常。

 

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

 

throws主要是聲明這個方法會拋出這種類型的異常,使它的調用者知道要捕獲這個異常。
throw是具體向外拋異常的動做,因此它是拋出一個異常實例。

 

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

 

同時:一、throws出如今方法函數頭;而throw出如今函數體。二、throws表示出現異常的一種可能性,並不必定會發生這些異常;throw則是拋出了異常,執行throw則必定拋出了某種異常。三、二者都是消極處理異常的方式(這裏的消極並非說這種方式很差),只是拋出或者可能拋出異常,可是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。

相關文章
相關標籤/搜索