西安恒智小寨java_Java常用异常整理
你這么優秀,一定會關注我↑↑↑,對吧~
版權信息|本文原作者“程序猿說你好”,轉載自人云亦云。
整理下Java的常用異常。正確使用異常在實際編碼中非常重要,但面試中的意義相對較小,因為對異常的理解和應用很難通過幾句話或幾行代碼考查出來,不過我們至少應答出三點:異常類的繼承關系、常用異常類、常用異常類的使用場景,下文將圍繞這三點介紹。
異常類的繼承關系
Java中,所有異常都繼承自Throwable類(一個完整可用的類)。整體上分為Error、Exception兩個大類,Exception大類又分為UncheckedException(繼承于RuntimeException)和CheckedException(繼承于Exception,但不繼承于RuntimeException)。
為了幫助理解,我在每個類別下都給出了兩個常用子類,如Error包OutOfMemoryError、AssertionError等;UncheckedException包括NullPointerException、IllegalArgumentException;CheckedException包括IOException、InterruptedException。面試畫異常類的繼承關系時,要求能清楚的說明幾個類別并分類別舉幾個常用的異常類。
常用異常類
下面分類別擴充一下常用的異常類,字典序排序:
需要著重理解的是UncheckedException。
常用異常類的使用場景
常用異常還是有點多,下面分別講解上述三個類別的使用場景,并在每個類別中選一個例子進行講解。
Error
Error通常描述了系統級的錯誤,并且程序猿無法主動處理——當然,系統級錯誤也有可能由代碼間接導致,這不在我們的討論范圍內。發生系統級錯誤的時候,系統環境已經不健康了,因此,Error不強制捕獲或聲明,也就是不強制處理,一般情況下只需要把異常信息記錄下來(如果能記下當時的系統快照更好)。
OutOfMemoryError
當可用內存不足時,會由JVM拋出OutOfMemoryError。一般由三種原因導致:
堆設置過小,不滿足正常的內存需求
代碼中存在內存泄露,占用了大量內存而不能被回收
選擇的GC算法與某些極端的應用場景不匹配,內存碎片過多,沒有足夠大的連續空間分配給對象
JVM拋出OutOfMemoryError前,會嘗試進行一次Full GC,如果GC后可用內存還是不足,才會拋出OutOfMemoryError。因此,這時程序猿必然無法主動處理這一問題,只能等程序崩潰后再去查證原因。
UncheckedException
嚴格來說,Error也可以被劃歸UncheckedException,但我們更習慣用UncheckedException描述運行期發生,通常由于代碼問題直接引起的程序相關的錯誤,并且程序猿無法主動處理。注意區分,系統級錯誤都應該用Error描述。UncheckedException發生的大部分情況是代碼寫挫了,因此,UncheckedException也不強制捕獲或聲明,也就是不強制處理,一般情況下記下日志即可。
不同的是,如果可能,要保證UncheckedException是可控的(在異常被動拋出前檢查并主動拋出)。
NullPointerException
NullPointerException是最常見的UncheckedException。如果在一個空指針上引用方法或變量等,則運行期會拋出NullPointerException??罩羔樧尦绦蜃兊牟豢煽?#xff1a;如果任由空指針在程序運行期隨意傳遞、使用,我們將無法確定程序的行為,也無法確定捕獲NullPointerException時程序所處的狀態。
解決這一問題的方法很簡單:
盡早檢查并主動拋出異常
單獨、提前處理邊界條件
盡量不使用null表示狀態,特別是在集合中
前兩條原則通用于大部分UncheckedException,可參考String#toLowerCase()的例子。第三條原則需要在代碼的健壯與簡潔之間做出權衡,有限保證簡潔清晰,需要健壯再去健壯。
IOException
產生IOException的原因非常多,但很多時候我們并不關心細節原因,因為文件系統是一個不太可控的因素,這時我們可以以IOException為粒度處理;某些需要關心細節的異常情況,則應使用IOException的子類,以分情況處理。
前面總結的FileAlreadyExistsException、FileNotFoundException、UnknownHostException等,都是IOException的子類。這三種異常恰好都是可以處理的。
(版權聲明:推送文章節選自網絡,部分內容除非確實無法確認,我們都已取得授權并注明作者和來源。若涉及版權問題,煩請原作者聯系我們。聯系方式:270834121@qq.com)
END
敬
請
關
注
更多教育類資訊還可關注“恒智集團”
點擊下方“閱讀原文”查看更多成長干貨。多多留言,小編就來勾搭你啦~
總結
以上是生活随笔為你收集整理的西安恒智小寨java_Java常用异常整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: THREEJS相关3d-force-gr
- 下一篇: Unitimes三周年重磅第二弹 Git