1. 程式人生 > >宣告丟擲異常

宣告丟擲異常

1、宣告

(1)定義一個類的方法的時候,可以指定這個方法可能丟擲什麼異常

(2)例如FileInputStream是通過流來讀取一個檔案,讀檔案的話,name這會傳一個檔案路徑過來,但是這個路徑下面的檔案可能不存在,因此這個構造方法可能會錯,因此通過FileNoFoundException告訴編譯器可能會有什麼錯誤。

2、什麼時候需要使用throws呢?

 

(1)在FileInputStream類中,有很多過載的建構函式,在這些過載的建構函式中,有throws宣告,throws FileNotFoundException, FileNotFoundException是Exception的子類,不是RuntimeException的子類,是一個需要checked的異常

(2)在new的時候,就會呼叫其構造方法了,這個構造方法會可能丟擲一個checked異常,在main方法中,呼叫了FileInputStream的構造方法,而這個構造方法又可能拋一個checked異常。

(3)儲存之後,會報錯,改法1

  • 添加了上面的話之後,代表main中也可能會丟擲異常
  • 因為main中呼叫了FileInputStream構造方法,這個構造方法會呼叫一個FileNotFoundException這樣一個checked異常,但是這個程式碼裡面沒有進行try、catch處理,呼叫的方法裡面又可能會出現異常,說明main方法中也可能出現FileNotFoundException異常,因此main中也要throw。
  • 呼叫一個已丟擲異常的方法,但是沒有try、catch,也就是沒有進行相應的處理,這個時候,這個方法所在的方法也需要丟擲異常

(4)儲存之後,會報錯,改法2

 

可能出現異常,那麼我們就進行相應的處理

(3)和(4)的改法都是針對已檢查異常來說的,對於未檢查異常則不需要做相應的改動。

(5)丟擲多個異常的話,用“,”分隔開 

(6)對於unchecked異常

按理說,既然已經聲明瞭這麼一個異常,那麼divide中就應該丟擲異常。

但是這樣也對,因為ArithmeticExteption是uncheckedException,所以不需要main丟擲異常。

3、RuntimeException

可以進行try、catch處理,同時也可以在divide方法中丟擲異常,同樣這些都不做也正確

4、非RuntimeException

5、總結