本文總結了有關Java異常的十大常見問題。
1.已檢查與未檢查
簡而言之,必須在方法中顯式捕獲已檢查的異常或在方法的throws子句中聲明該異常。未檢查的異常是由無法解決的問題引起的,例如被零除,空指針等。檢查的異常特別重要,因為您希望使用API的其他開發人員知道如何處理異常。
2.異常管理的最佳實踐
如果可以正確處理異常,則應將其捕獲,否則應將其引發。
3.為什麼在try中定義的變量不能被catch或final使用?
在以下代碼中,在try塊中聲明的字符串s不能在catch子句中使用。該代碼不通過編譯。
原因是您不知道在try塊中的哪個位置會引發異常。很有可能在聲明對象之前引發了異常。對於此特定示例,這是正確的。
4.為什麼Double.parseDouble(null)和Integer.parseInt(null)拋出不同的異常?
他們實際上拋出了不同的異常。這是JDK的問題。它們是由不同的開發人員開發的,因此不值得過多思考。
Integer.parseInt(null); // throws java.lang.NumberFormatException: null
Double.parseDouble(null); // throws java.lang.NullPointerException
5. Java中常用的運行時異常
這裡只是其中一些。
IllegalArgumentException
ArrayIndexOutOfBoundsException
當不滿足條件時,可以在if語句中使用它們,如下所示:
if(obj == null) {
thrownewIllegalArgumentException("obj can not be null");
6.我們可以在同一個catch子句中捕獲多個異常嗎?
答案是肯定的。只要這些異常類可以追溯到類繼承層次結構中的同一超類,就只能使用該超類。
7.構造函數可以在Java中引發異常嗎?
答案是肯定的。構造函數是一種特殊的方法。這是一個代碼示例。
8.在最後一個子句中引發異常
進行以下操作是合法的:
但是為了獲得更好的代碼可讀性,您應該將嵌入式try-catch塊包裝為新方法,然後將方法調用放在finally子句中。
methodThrowException();
9.可以在finally塊中使用返回
是的,它可以。
10.為什麼開發人員會默默使用異常?
發生了許多類似以下的時間代碼段。如果正確處理異常非常重要,為什麼開發人員會繼續這樣做呢?
最後,開發這麼多年我也總結了一套學習Java的資料與面試題,如果你在技術上面想提升自己的話,可以關注我,私信發送領取資料或者在評論區留下自己的聯繫方式,有時間記得幫我點下轉發讓跟多的人看到哦。