2017-02-10 115 views
1

我想知道爲什麼我的程序是這樣的行爲。檢查與未檢查的異常代碼的可重用性

我有一個方法,當試圖除以零時拋出一個ArithmeticException。我把這個方法放在試試區塊。當它拋出一個異常時,如果有的話,繼續的catch塊會捕獲這個ArithmeticException。

我理解這部分100%。

但我做了一些試驗。在我的方法正文中:

public static int quotient(int number1, int number2) { 
    if (number2 == 0) 
     throw new ArithmeticException("Divisor cannot be zero!"); 
    return number1/number2; 
} 

我刪除了第三行。當我刪除第三行時,該程序仍然運行良好,並執行完全像以前一樣。它發生時仍然會遇到ArithmeticException錯誤。

是因爲ArithmeticException是未檢查的異常,並且此錯誤僅在運行時捕獲,因此否定需要我明確聲明此程序會導致未檢查的異常?如果它是一個檢查的異常,我是否會特別需要聲明這個方法會拋出一個未經檢查的異常?

回答

0

如您所述算術異常是運行時異常,您不需要指定它會引發異常。

雖然您確實需要指定您的程序是否使用throws語句引發編譯時異常。需要檢查異常的一個示例是IOException。

+0

如果你知道,還有一點感謝,你知道「重新拋出異常給調用者嗎?」是什麼意思? ? – xAnnette97

+0

您重新拋出一個異常,以便您不必編寫多個catch塊。不要在源代碼處理異常,你可以將這些異常放到調用者處,並在另一個類中處理。 – JordanH

+0

抱歉很蠢,但你打電話給你的意思是什麼?你能更具體,然後我會標記你回答謝謝 – xAnnette97