日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【java读书笔记】——java的异常处理

發(fā)布時(shí)間:2024/9/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【java读书笔记】——java的异常处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ?程序在實(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)行的代碼}


①try語句

? ? ? ?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。