好程式設計師Java培訓分享Java處理異常的幾個小知識

好程式設計師發表於2020-07-15

   好程式設計師Java 培訓分享 Java 處理異常的幾個小知識, 如果 Java 方法不能按照正常的流程執行,那麼可以透過另外一種途徑退出:丟擲一個封裝了錯誤資訊的物件,這個就是 Java 的異常 ; 當發生異常時,後面的程式碼無法繼續執行,而是由異常處理器繼續執行。

   一、異常的分類

   Throwable 是所有異常的超類,下一級可以分為 Error Exception

   1. Error

   Error 是指 Java 執行時系統內部的錯誤,或者說它代表了 JVM 本身的錯誤,通常都是比較嚴重的錯誤,比如記憶體溢位 , 虛擬機器錯誤等等 ;Error 通常和硬體或 JVM 有關,和程式本身無關,所以不能被程式碼捕獲和處理。

   2. Exception

   我們經常說的異常是指Exception ,又可以分成執行時異常和檢查異常。

   RuntimeException :執行時異常,這類異常在編譯期間不強制程式碼捕捉,但是可能在在 JVM 執行期間丟擲異常 ; 出現此類異常,通常是程式碼的問題,所以需要修改程式避免這類異常。常見的執行時異常,比如: NullPointerException ClassCastException 等等。

   CheckedException :檢查異常,這種異常發生在編譯階段, Java 編譯器會強制程式碼去捕獲和處理此類異常 ; 比如: ClassNotFoundException IllegalAccessException 等等。

   二、異常的處理方法

   捕獲異常使用 try...catch 語句,把可能發生異常的程式碼放到 try {...} 中,然後使用 catch 捕獲對應的異常 ; 我們也可以在程式碼塊中使用 Throw 向上級程式碼丟擲異常 ; 在方法中使用 throws 關鍵字,向上級程式碼丟擲異常 ;

   三、Throw throws 的區別

   Throw 在方法內,後面跟著異常物件 ; throws 是用在方法上,後面跟異常類 ;

   Throw 會丟擲具體的異常物件,當執行到 Throw 的時候,方法內的程式碼也就執行結束了 ;throws 用來宣告異常,提醒呼叫方這個方法可能會出現這種異常,請做好處理的準備,但是不一定會真的出現異常。

   四、使用Exception 的一些建議

   1. 不要試圖透過異常來控制程式流程,比如開發一個介面,正確的做法是對入參進行非空驗證,當引數為空的時候返回“引數不允許為空”,而不應該捕捉到空指標的時候返回錯誤提示。

   2. 僅捕獲有必要的程式碼,儘量不要用一個 try...catch 包住大段甚至整個方法內所有的程式碼,因為這樣會影響 JVM 對程式碼進行最佳化,從而帶來額外的效能開銷。

   3. 很多程式設計師喜歡 catch(Exception e) ,其實應該儘可能地精確地指出是什麼異常。

   4. 不要忽略異常,捕捉到異常之後千萬不能什麼也不做,要麼在 catch{...} 中輸出異常資訊,要麼透過 Throw throws 丟擲異常,讓上層程式碼處理。

   5. 儘量不要在 catch{...} 中輸出異常後,又向上層程式碼丟擲異常,因為這樣會輸出多條異常資訊,而且它們還是相同的,這樣可能會產生誤導。

   6. 不要在 finally{...} 中寫 return ,因為 try{...} 在執行 return 之前執行 finally{...} ,如果 finally{...} 中有 return ,那麼將不再執行 try{...} 中的 return

  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2704646/,如需轉載,請註明出處,否則將追究法律責任。

相關文章