Java基礎系列-throw、throws關鍵字
原創文章,轉載請標註出處:《Java基礎系列-throw、throws關鍵字》
一、概述
throw和throws就是異常相關的關鍵字,在java中異常機制是一個非常重要的機制,我們需要重點掌握。
既然說到了異常,簡單描述下異常機制很有必要,這也對後文的講述提供前提。
二、Java異常機制
在Java中表示異常的介面是Exception,與其同一層次的還有一個Error介面,用於描述不可挽回的系統級錯誤,它們兩個都繼承自Throwable介面,這個介面是所有異常和錯誤的超介面。
在Java中只有Throwable的例項才能在虛擬機器或者java程式碼中被丟擲,一切想要丟擲的異常都必須作為Throwable的子類。
異常又分為兩種,一種是受檢異常,另一種是未受檢異常。
受檢異常是Java內部定義的一系列異常類,它們都實現了Exception介面,這些異常必須被手動捕捉或者手動丟擲,否則無法通過編譯,屬於強制處理異常,屬於編譯期異常。
未受檢異常則是一些可以不進行捕捉的異常,這些異常一般是由執行時邏輯引發,這些異常可以不捕捉,也可以進行捕捉或丟擲,如果未進行捕捉、丟擲處理,那麼一旦執行時引發了這些異常,那麼會被JVM直接處理,它包括執行時異常和Error。
執行時異常是典型的未受檢異常,Java內部為我們提供了一部分這型別異常,其中最常見的空指標異常就屬此類。
其實正確的做法是儘可能的對異常進行捕捉處理。
三、throw作用
異常的丟擲需要使用throw關鍵字,丟擲的是一個異常物件,一般我們採用下面的方式進行丟擲
throw new NullPointerException();
再結合try...catch語句,或者if語句進行組合使用,將可能的異常丟擲。
有時候我們使用try...catch語句的catch塊中加入throw語句,可以將一個受檢異常轉化為一個未受檢異常。
四、throws作用
當我們沒有條件在當前的方法中進行某個異常的處理時,可以在方法宣告處丟擲,在這裡丟擲異常將被呼叫者捕捉處理,或者再次丟擲,多個異常可用逗號隔開。
public void test()throws NullPointerException,ParseException{}
以下內容來自(http://blog.csdn.net/luoweifu/article/details/10721543 )
五、異常習慣
- 在寫程式時,對可能會出現異常的部分通常要用try{...}catch{...}去捕捉它並對它進行處理;
- 用try{...}catch{...}捕捉了異常之後一定要對在catch{...}中對其進行處理,那怕是最簡單的一句輸出語句,或棧輸入e.printStackTrace();
- 如果是捕捉IO輸入輸出流中的異常,一定要在try{...}catch{...}後加finally{...}把輸入輸出流關閉;
- 如果在函式體內用throw丟擲了某種異常,最好要在函式名中加throws拋異常宣告,然後交給呼叫它的上層函式進行處理。
參考: