天天看點

java語言異常中throw的作用_Java語言中throw和throws的差別是什麼 - 收獲啦

1.使用者程式自定義的異常和應用程式特定的異常,必須借助于 throws 和 throw 語句來定義抛出異常。

1.1 throw是語句抛出一個異常。

文法:throw (異常對象);

throw e;

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

文法:[(修飾符)](傳回值類型)(方法名)([參數清單])[throws(異常類)]{......}

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

舉例:

throws E1,E2,E3隻是告訴程式這個方法可能會抛出這些異常,方法的調用者可能要處理這些異常,而這些異常E1,E2,E3可能是該函數體産生的。

throw則是明确了這個地方要抛出這個異常。

如: 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,則該方法的調用者也要處理此異常。

throw語句用在方法體内,表示抛出異常,由方法體内的語句處理。

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

throws主要是聲明這個方法會抛出這種類型的異常,使它的調用者知道要捕獲這個異常。

throw是具體向外抛異常的動作,是以它是抛出一個異常執行個體。

throws說明你有那個可能,傾向。

throw的話,那就是你把那個傾向變成真實的了。

同時:

1、throws出現在方法函數頭;而throw出現在函數體。

2、throws表示出現異常的一種可能性,并不一定會發生這些異常;throw則是抛出了異常,執行throw則一定抛出了某種異常。

3、兩者都是消極處理異常的方式(這裡的消極并不是說這種方式不好),隻是抛出或者可能抛出異常,但是不會由函數去處理異常,真正的處理異常由函數的上層調用處理。