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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《疯狂Java讲义》10

發布時間:2025/3/21 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《疯狂Java讲义》10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?Java的異常機制主要依賴于try、catch、finally、throw和throws五個關鍵字。? ??

2.Java的異常分為兩種,Checked異常和Runtime異常,Java認為Checked異常是在編譯時可以處理的異常,所以它強制Java處理所有的Checked異常,而Runtime異常無需處理.

3.?使用try...catch來捕獲異常:

????語法結構為如下:

?

4.?如果執行try塊中的代碼出現了異常情況,系統會自動生成一個異常對象,該異常對象被提交給Java運行時環境,這個過程稱為拋出異常。當Java運行時環境接受到這個異常時,會尋找處理該對象的Catch塊,如果找到合適的catch塊,就把對象交給這個catch快進行處理,這個過程稱為捕獲異常,當然了,如果沒有找到合適的catch塊,那么程序將終止。

5.?程序在執行try中的代碼時,如果遇到異常,就會產生Exception,上面也提到了,會調用合適的catch來進行處理。這里要說明的是,每一個可以接收的異常都有自己相對應的catch語句,也就是有唯一性。

6.?Java把所有的非正常情況分為兩種,一種是異常(Exception),一種是錯誤(Error)。Error錯誤一般是指與虛擬機相關的問題,如系統崩潰、虛擬機錯誤、動態鏈接失效等。這種錯誤無法恢復或不可能捕獲,將導致應用程序中斷,因此應用程序不應該試圖使用catch塊來捕獲Error對象。

7. try語句與if語句的區別:

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

8. 看一個捕獲異常的栗子:? ?

寫法就是醬紫的。紅框框出來的是try和catch的用法栗子,紫色的框出來的是之前我們講過的Scanner的用法。

給大家看一下結果:

示例1:

示例2:

換一種輸入方法:

我們再試試捕獲不同異常:

示例3:

如果把括號內的數據換成:

結果為(示例4):

????上面的幾種異常處理較為常見,熟悉最好。

?

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

????紅框內的內容往后放,因為這個包含的情況很多,上面的都比較具體,所以先小后大。再例如:運行時異常應該放在空指針異常的后面。

?

10. Java7提供的多異常捕獲

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

先看一下示例吧:

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

這就是多異常捕獲,需要注意的兩點是:

(1)書寫問題:多個異常中間用“|”隔開:

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

舉個栗子:

看一下編譯信息:

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

編譯沒有問題。

?

11. 訪問異常信息

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

????如果程序需要在catch塊中訪問異常對象的相關信息,則可以通過訪問catch塊的后異常形參來獲得。當Java運行時決定調用某個catch塊來處理該異常對象時,會將異常對象賦值給catch塊后的異常參數,程序就可以通過該參數獲得異常的相關信息。

來~栗子:

?

結果如下:

????所有的異常對象都包含了如下幾個常用的方法:

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

????2)printStackTrace():將該異常的跟蹤棧信息輸出到標準錯誤輸出。

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

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

?

12. 使用finally回收資源

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

????如果程序在try中打開了物理資源(例如數據庫連接,網絡連接和磁盤文件等),這些物理資源必須顯示回收。之前我們講垃圾回收機制的時候說過,系統只能自動回收一些內存中的對象所占用的內存,不能回收物理資源。所以怎么辦?如果在try或者catch中進行回收處理,程序可能得不到執行,所以我們不能放在這兩個地方。為了解決這個問題,異常處理機制提供了finally塊,不論是否出現異常,finally都會執行。多個catch塊放在try之后,finally塊放在catch塊之后。

來~栗子:

?

結果如下:

?再來~栗子:

?

在上面的try里稍作改動,如上圖。結果不變。這說明什么?我們印象中的return還是比較厲害的,一般方法執行到return都會結束,但是這里并沒有結束,finally還是會繼續執行,這里要注意一下。但是并不是說我們對finally無可奈何了。

又來~栗子:

?

這個語句含義是退出虛擬機,所以程序不會執行finally塊,結果如下:

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

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

?

14. 使用throws聲明拋出異常

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

????throws聲明拋出異常的語法格式為:

? ? throws ExceptionClass1,ExceptionClass2...

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

舉個栗子:

?

這個程序結果和我們之前用try...catch的結果是一樣的。

?

END

?

??

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。