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