Java中throws和throw的區別小結

2021-08-03 20:48:26 字數 1343 閱讀 7505

使用者程式自定義的異常和應用程式特定的異常,必須借助於throws和throw語句來定義丟擲異常。

1、throw是語句丟擲乙個異常。

語法:throw (異常物件);

throw e;

2、throws是方法可能丟擲異常的宣告,用在宣告方法時,表示該方法可能要丟擲異常。

語法:[(修飾符)](返回值型別)(方法名)([引數列表])[throws(異常類)]

public

void doa(int a) throws exception1, exception2

舉例:throws e1,e2,e3只是告訴程式這個方法可能會丟擲這些異常,方法的呼叫者可能要處理這些異常,而這些異常e1,e2,e3可能是該函式體產生的。throw則是明確了這個地方要丟擲這個異常。

如:

public

void doa(int a) throws ioexception catch (exception1 e) catch (exception2 e)

if (a != b)

throw

newexception3("自定義異常"

);}

**塊中可能會產生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)兩者都是消極處理異常的方式(這裡的消極並不是說這種方式不好),只是丟擲或者可能丟擲異常,但是不會由函式去處理異常,真正的處理異常由函式的上層呼叫處理。

Java中throw和throws的區別

1 throws出現在方法函式頭 而throw出現在函式體。2 throws 是乙個宣告 它宣告這裡可能出現異常,但未必一定出現 而 throw 是乙個動作 它丟擲也可以說它產生乙個異常出現,只要執行到了這個關鍵字,異常必定出現 throw是語句丟擲乙個異常。語法 throw 異常物件 throw ...

java中的throw和throws區別

1 throws throws關鍵字通常被應用在宣告方法時,用來指定可能丟擲的異常。多個異常可以使用逗號隔開。當在主函式中呼叫該方法時,如果發生異常,就會將異常拋給指定異常物件。如下面例子所示 public class shoot public static void main string arg...

JAVA中throw和throws的區別

throws是用來宣告乙個方法可能丟擲的所有異常資訊 throw則是指丟擲的乙個具體的異常型別。通常在乙個方法 類 的宣告處通過throws宣告方法 類 可能丟擲的異常資訊,而在方法 類 內部通過throw宣告乙個具體的異常資訊。throws通常不用顯示的捕獲異常,可由系統自動將所有捕獲的異常資訊拋...