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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

《疯狂Java讲义》10

發(fā)布時(shí)間:2025/3/21 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《疯狂Java讲义》10 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.?Java的異常機(jī)制主要依賴于try、catch、finally、throw和throws五個(gè)關(guān)鍵字。? ??

2.Java的異常分為兩種,Checked異常和Runtime異常,Java認(rèn)為Checked異常是在編譯時(shí)可以處理的異常,所以它強(qiáng)制Java處理所有的Checked異常,而Runtime異常無(wú)需處理.

3.?使用try...catch來(lái)捕獲異常:

????語(yǔ)法結(jié)構(gòu)為如下:

?

4.?如果執(zhí)行try塊中的代碼出現(xiàn)了異常情況,系統(tǒng)會(huì)自動(dòng)生成一個(gè)異常對(duì)象,該異常對(duì)象被提交給Java運(yùn)行時(shí)環(huán)境,這個(gè)過(guò)程稱為拋出異常。當(dāng)Java運(yùn)行時(shí)環(huán)境接受到這個(gè)異常時(shí),會(huì)尋找處理該對(duì)象的Catch塊,如果找到合適的catch塊,就把對(duì)象交給這個(gè)catch快進(jìn)行處理,這個(gè)過(guò)程稱為捕獲異常,當(dāng)然了,如果沒(méi)有找到合適的catch塊,那么程序?qū)⒔K止。

5.?程序在執(zhí)行try中的代碼時(shí),如果遇到異常,就會(huì)產(chǎn)生Exception,上面也提到了,會(huì)調(diào)用合適的catch來(lái)進(jìn)行處理。這里要說(shuō)明的是,每一個(gè)可以接收的異常都有自己相對(duì)應(yīng)的catch語(yǔ)句,也就是有唯一性。

6.?Java把所有的非正常情況分為兩種,一種是異常(Exception),一種是錯(cuò)誤(Error)。Error錯(cuò)誤一般是指與虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰、虛擬機(jī)錯(cuò)誤、動(dòng)態(tài)鏈接失效等。這種錯(cuò)誤無(wú)法恢復(fù)或不可能捕獲,將導(dǎo)致應(yīng)用程序中斷,因此應(yīng)用程序不應(yīng)該試圖使用catch塊來(lái)捕獲Error對(duì)象。

7. try語(yǔ)句與if語(yǔ)句的區(qū)別:

????try和catch語(yǔ)句后面的花括號(hào)不能省略,但是if后面如果只有一行語(yǔ)句,花括號(hào)是可以省略的。

8. 看一個(gè)捕獲異常的栗子:? ?

寫法就是醬紫的。紅框框出來(lái)的是try和catch的用法栗子,紫色的框出來(lái)的是之前我們講過(guò)的Scanner的用法。

給大家看一下結(jié)果:

示例1:

示例2:

換一種輸入方法:

我們?cè)僭囋嚥东@不同異常:

示例3:

如果把括號(hào)內(nèi)的數(shù)據(jù)換成:

結(jié)果為(示例4):

????上面的幾種異常處理較為常見(jiàn),熟悉最好。

?

9.?捕獲異常時(shí),注意先捕獲小異常,再捕獲大異常。就是說(shuō),范圍大些的放在程序的后面,更為具體的放在前面。用上面的例子來(lái)說(shuō),就是將

????紅框內(nèi)的內(nèi)容往后放,因?yàn)檫@個(gè)包含的情況很多,上面的都比較具體,所以先小后大。再例如:運(yùn)行時(shí)異常應(yīng)該放在空指針異常的后面。

?

10. Java7提供的多異常捕獲

????在Java7之前,每個(gè)catch只能捕獲一種異常,但是Java7之后,一個(gè)catch塊可以捕獲多種異常。

先看一下示例吧:

上面和之前的代碼一樣,結(jié)果如下:

這就是多異常捕獲,需要注意的兩點(diǎn)是:

(1)書寫問(wèn)題:多個(gè)異常中間用“|”隔開(kāi):

(2)捕獲多種類型的異常時(shí),異常變量有隱式的final修飾,因此程序變量不能對(duì)異常變量重新賦值。

舉個(gè)栗子:

看一下編譯信息:

但是如果是只捕獲一種異常變量的話,就可以重新賦值:

編譯沒(méi)有問(wèn)題。

?

11. 訪問(wèn)異常信息

(下面烏拉烏拉一堆字可以都不看,吃栗子)

????如果程序需要在catch塊中訪問(wèn)異常對(duì)象的相關(guān)信息,則可以通過(guò)訪問(wèn)catch塊的后異常形參來(lái)獲得。當(dāng)Java運(yùn)行時(shí)決定調(diào)用某個(gè)catch塊來(lái)處理該異常對(duì)象時(shí),會(huì)將異常對(duì)象賦值給catch塊后的異常參數(shù),程序就可以通過(guò)該參數(shù)獲得異常的相關(guān)信息。

來(lái)~栗子:

?

結(jié)果如下:

????所有的異常對(duì)象都包含了如下幾個(gè)常用的方法:

????1)getMessage():返回該異常的詳細(xì)描述字符串;

????2)printStackTrace():將該異常的跟蹤棧信息輸出到標(biāo)準(zhǔn)錯(cuò)誤輸出。

????3)printStackTrace(PrintStream s):將該異常的跟蹤棧信息輸出到指定輸出流;

????4)getStackTrace():返回該異常的跟蹤棧信息。

?

12. 使用finally回收資源

(下面的字可以只看粗體)

????如果程序在try中打開(kāi)了物理資源(例如數(shù)據(jù)庫(kù)連接,網(wǎng)絡(luò)連接和磁盤文件等),這些物理資源必須顯示回收。之前我們講垃圾回收機(jī)制的時(shí)候說(shuō)過(guò),系統(tǒng)只能自動(dòng)回收一些內(nèi)存中的對(duì)象所占用的內(nèi)存,不能回收物理資源。所以怎么辦?如果在try或者catch中進(jìn)行回收處理,程序可能得不到執(zhí)行,所以我們不能放在這兩個(gè)地方。為了解決這個(gè)問(wèn)題,異常處理機(jī)制提供了finally塊,不論是否出現(xiàn)異常,finally都會(huì)執(zhí)行。多個(gè)catch塊放在try之后,finally塊放在catch塊之后。

來(lái)~栗子:

?

結(jié)果如下:

?再來(lái)~栗子:

?

在上面的try里稍作改動(dòng),如上圖。結(jié)果不變。這說(shuō)明什么?我們印象中的return還是比較厲害的,一般方法執(zhí)行到return都會(huì)結(jié)束,但是這里并沒(méi)有結(jié)束,finally還是會(huì)繼續(xù)執(zhí)行,這里要注意一下。但是并不是說(shuō)我們對(duì)finally無(wú)可奈何了。

又來(lái)~栗子:

?

這個(gè)語(yǔ)句含義是退出虛擬機(jī),所以程序不會(huì)執(zhí)行finally塊,結(jié)果如下:

13.?上面我們說(shuō)到可以用finally塊對(duì)物理資源進(jìn)行回收,但是也可以看到,代碼量會(huì)增加很多。Java7后,提供了一種看起來(lái)較為簡(jiǎn)單的方法,看例子:

但是,說(shuō)實(shí)話,我不喜歡這個(gè)寫法,可能以后是得這么用,但是,,,以后再說(shuō)(傲嬌臉.jpg || 傲嬌臉.gif)

?

14. 使用throws聲明拋出異常

????使用throws聲明拋出異常的思路是:當(dāng)前方法不知道如何處理異常,交給上一級(jí)去處理。如果main方法不知道如何處理,也可以使用throws聲明拋出異常,交給虛擬機(jī)處理。虛擬機(jī)處理的方式是打印異常的跟蹤棧信息,并終止程序運(yùn)行(就是我們上面舉過(guò)的例子)。

????throws聲明拋出異常的語(yǔ)法格式為:

? ? throws ExceptionClass1,ExceptionClass2...

用throws的話就不用try...catch了。

舉個(gè)栗子:

?

這個(gè)程序結(jié)果和我們之前用try...catch的結(jié)果是一樣的。

?

END

?

??

?

總結(jié)

以上是生活随笔為你收集整理的《疯狂Java讲义》10的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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