Hi,我是Mic
今天給大家分享一道阿里一面的面試題,
這道題目比較基礎,但是確難倒了很多人,
關于”受檢例外和非受檢例外的理解“
我們來看看普通人和高手的回答,
普通人:
嗯,,,,,,,
運行例外不需要捕獲的其他例外是需要強制捕獲的,像一些IO例外,
高手:
好的,
所謂的受檢例外,表示在編譯的時候強制檢查的例外,這種例外需要顯示的通過try/catch來捕捉,或者通過throws拋出去,否則從程式無法通過編譯,

而非受檢例外,表示在編譯器可以不需要強制檢查的例外,這種例外不需要顯示去捕捉,
在Java里面,所有的例外都是繼承自java.lang.Throwable類,Throwable有兩個直接子類,Error和Exception,
Error用來表示程式底層或者硬體有關的錯誤,這種錯誤和程式本身無關,比如常見的OOM例外,這種例外和程式本身無關,所以不需要檢查,屬于非受檢例外,
Exception表示程式中的例外,可能是由于程式不嚴謹導致的,比如NullPointerException,
Exception下面派生了RuntimeException和其他例外,其中RuntimeException運行時例外,也是屬于非受檢例外,
所以,除了Error和RuntimeException及派生類以外,其他例外都是屬于受檢例外,比如IOException、SQLException,

之所以在Java中要設計一些強制檢查的例外,我認為主要原因是考慮到程式的正確性、穩定性和可靠性,
比如資料庫例外、檔案讀取例外,這些例外是程式無法提前預料到的,但是一旦出現問題,就會造成資源被占用導致程式出現問題,
所以這些例外我們需要主動捕獲,一旦出現問題,我們可以做出相應的處理,比如關閉資料庫連接、檔案流的釋放等,
以上就是我對這個問題的理解!
總結
這個問題并不難,但是在實際作業中,如何用好例外又顯得很重要,
從高手的回答中可以明顯看到他對例外的理解層次是比較深的,分別介紹了受檢和非受檢例外,
以及在Java中這兩種例外是如何分類,最后說明了這兩種例外的價值,
喜歡我的作品的小伙伴記得點贊和收藏加關注,
著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自
Mic帶你學架構!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力,歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/492221.html
標籤:Java
下一篇:Java實用類-Enum(列舉)
