【java读书笔记】——java的异常处理
? ? ? ?程序在實際環境的執行過程中。安全成為須要首先考慮的重要因素之中的一個。這也是用戶和程序猿最關心的問題。同一時候,Java語言健壯性也體如今了可以及時有效地處理程序中的錯誤。準確的說是Java的異常處理機制為解決安全問題提交了一份愜意的答卷。
? ? ? ?先從總體上看一下本文要介紹的內容,然后進行具體的分析:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1、異常的概念
? ? ? ??
? ? ? ?異常又稱為例外,是特殊的執行錯誤對象,相應著Java語言特定的執行錯誤處理機制。
上面的概念是書本上說的。以下我談一下自己的看法
? ? ? ?事實上異常處理機制提供了統一的機制來識別和響應程序錯誤。異常能夠為我們解答3W(what、where、why)問題提供幫助。
①what
? ? ? ? 假設異常機制使用恰當,被拋出異常的類型能夠表明發生了什么程序錯誤。
②where
? ? ? ?發生異常之后,而Stack Trace能夠清楚的告訴我們什么地方發生了錯誤。
③why
? ? ? ? 為什么錯誤發生則能夠通過看異常信息和Stack Trace來分析。
? ? ? ? 假設你的異常不能解決上面的3W問題。那么能夠證明你對異常使用一定不對。
2、異常的分類
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?這張類圖能夠非常好的說明 Thorwable類是全部異常和錯誤的超類,有兩個子類Error和Exception,分別表示錯誤和異常。 當中異常類Exception又分為執行時異常(RuntimeException)和非執行時異常,以下將具體講述這些異常之間的差別與聯系:
1.Error與Exception
? ? ? ?Error:稱為錯誤。由Java虛擬機生成并拋出,包含動態鏈接失敗、虛擬機錯誤等。程序對其不做處理,也能夠說成不能夠處理的異常。
? ? ? ?Exception:全部異常類的父類,其子類相應了各種各種詳細可能出現的異常事件,一般須要用戶聲明或捕獲,也叫可處理的異常。
2.runtimeException與非執行時異常(其它異常)
? ? ? ?runtimeException:一類特殊的異常,如被0除、數組下界超范圍。其產生比較頻繁。處理麻煩。假設聲明或捕獲將會對程序可讀性和執行效率影響非常大。因此系統自己主動檢測并將它們交給缺省的異常處理程序,這種異常能夠處理也能夠不處理。
? ? ? ?非執行時異常:是RuntimeException以外的異常,類型上都屬于Exception類及其子類,這類異常是必需要處理的異常,否則程序就不能編譯通過。
3、異常的捕獲和處理
? ? ??
? ? ? ?異常的捕獲和處理是不easy把握的事情,假設處理不當。不但會造成程序的可讀性差,并且會導致系統的性能下降,甚至會造成難以發現的錯誤。異常處理涉及到五個keyword:try、catch、finally、throw、throws。以下我們一一介紹:
1、異常處理的基本的語法
try{//程序代碼}catch(異常類型 異常的變量名){//異常處理代碼}finally{//異常發生,方法返回之前,總是要運行的代碼}? ? ? ?1.try語句指定了一段代碼,該段代碼一次捕獲并處理例外的范圍。
? ? ? ?2.在運行過程中,該段代碼可能會產生并拋出異常,catch語句捕獲并處理。
? ? ? ?3.沒有例外產生。全部的catch代碼段都被忽略不運行。
②catch語句
? ? ? ?1.catch語句是對異常進行處理的代碼,每一個try能夠有一個或多個catch語句。用于處理可能產生不同類型的異常對象。
? ? ? ?2.在catch中聲明的異常對象,封裝了異常事件發生的信息,在catch語句塊中能夠使用這個對象的一些方法獲得這些信息。
③finally
? ? ? ?1.finally語句為異常處理提供了統一的出口,使得在控制流程轉到程序的其它部分曾經,可以對程序的狀態做統一的管理。
? ? ? ?2.不管try語句是否拋出異常。finally語句都會被運行
? ? ? ?3.finally語句能夠釋放資源如:關閉打開的文件、刪除暫時文件等等。
④throw與throws
? ? ? throw用來在方法體內拋出一個異常。throws用來在方法名后聲明方法可能會拋出什么異常。
?
public static void test() throws Exception{//拋出一個檢查異常throw new Exception("方法test中的Exception");}2、 異常處理的一般原則
? ? ? ?1、 異常能處理就早處理,拋出不去還不能處理的就想法消化掉或者轉換為RuntimeException處理。
由于對于一個應用系統來說,拋出大量異常是有問題的,應該從程序開發角度盡可能的控制異常發生的可能。
? ? ? ?2、對于異常,先逮小異常再逮大的異常。
由于程序的運行跟人的正常思維是一樣。直接捕獲基類異常。處理異常變的毫無意義。
4、總結
? ? ? 一張圖,對于異常機制更深刻的理解,才干更好的使用。五個keyword是技術的必備武器。你必須得懂。先逮小的,再逮大的,對于異常的處理原則要把握好。否則就是功歸一簣。
總結
以上是生活随笔為你收集整理的【java读书笔记】——java的异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos7.2安装zabbix3.0
- 下一篇: js想不通的地方