成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java 異常學(xué)習(xí)

gghyoo / 1141人閱讀

摘要:因?yàn)槭怯商摂M機(jī)自動拋出并自動捕獲,所以又叫非檢查異常。多異常捕獲在之前,對多種的異常只能使用多個來進(jìn)行捕獲。注意多種異常類型之間用豎線隔開。多重塊后面,最好再有個塊用來捕獲異常,防止遺漏。期待自己的異常進(jìn)階。

異常的體系機(jī)構(gòu)

Java提供了豐富的異常類,而這些異常類之間又有這嚴(yán)格的繼承關(guān)系。下面讓我們看一下Java中異常的體系結(jié)構(gòu)。

首先,Java將所有的不正常情況分為兩種,一種是錯誤(Error),另一種就是我們所說的異常(Exception)。

Error錯誤是我發(fā)恢復(fù),不能獲取的,如系統(tǒng)崩潰,虛擬機(jī)錯誤,動態(tài)鏈接失敗等。這會導(dǎo)致程序直接中斷。

Exception是我們常說的異常,他又大致分為兩類,一類是運(yùn)行時異常:RuntimeException,另一類就是其他異常。因?yàn)?b>RuntimeException是由Java虛擬機(jī)自動拋出并自動捕獲,所以又叫非檢查異常。而另一類異常就不一樣了,需要我們手動的捕獲和處理異常,所以叫做檢查異常。

異常的捕獲

介紹了異常的大概情況,下面我們啊來說說如何捕獲處理異常。

try...catch...

首先,我們先想一下,如果沒有我們使用最原始的解決異常是個什么辦法:

if (異常1) {
    處理
} else if (異常2) {
    處理
} else {
    處理 
}

沒錯,就是一大長串的if...else,對每種異常情況進(jìn)行處理。所以這時我們就希望有一種更加強(qiáng)大的if塊,可以一下子表示所有的異常情況然后處理掉。這就有了我們的try...catch。

try {
    // 業(yè)務(wù)實(shí)現(xiàn)代碼
    ...
} catch (Exception e) {
    // 對異常的處理
}

如果try塊里的業(yè)務(wù)邏輯代碼出現(xiàn)了異常,系統(tǒng)就會生成一個異常對象,然后將該對象提交給Java運(yùn)行時環(huán)境(throw),接著查找catch塊,如果找到了合適的catch塊,就將該異常對象交由該catch塊處理。這個過程又叫做捕獲(catch)異常;如果找不到合適的catch塊,程序?qū)⑼顺觥?/p> 多異常捕獲

在Java7之前,對多種的異常只能使用多個catch來進(jìn)行捕獲。

try {
    // 業(yè)務(wù)實(shí)現(xiàn)代碼
    ...
} catch (Exception1 e1) {
    ...
} catch (Exception2 e2) {
    ...
} catch (Exception3 e3) {
    ...
}

但是從Java7開始,多個異??梢允褂?b>同一個catch來捕獲。

注意:

1.多種異常類型之間用豎線“|”隔開。
2.異常變量有隱式final修飾,因此不能對異常變量重新賦值。
3.父類異常要在子類異常以后捕獲。
finally回收資源

finally,最終的,也就是我們處理完異常最后要做的事情。由于有時候我們會在try塊里面使用一些資源,這些資源最后也就在finally塊里被回收掉了。

try {
    // 業(yè)務(wù)實(shí)現(xiàn)代碼
} catch (Exception e) {
    // 異常處理
} finally {
    // 資源回收
}

當(dāng)然了,如果你說我沒有使用資源,不想在finally塊里做資源回收的操作,也是可以的。

異常鏈

首先說說為什么會有異常鏈這種東西。因?yàn)閷τ谝粋€完整的應(yīng)用而言,都是有比較嚴(yán)格的分層關(guān)系的,上層依賴下層的API。而對于用戶而言,我們不想看到底層的SQL異常,同時也會使得系統(tǒng)不安全。所以這時我們就要將底層的異常捕獲,然后再拋出一個新的業(yè)務(wù)異常,就可以在新的異常中給出用戶比較友好的提示信息。

try {
    // 業(yè)務(wù)邏輯的實(shí)現(xiàn)
} catch (SQLException e) {
    // 記錄原始異常
    ...
    // 拋出新的異常
    throw new AnotherException("訪問數(shù)據(jù)庫出現(xiàn)異常");
}

或者我們也可以這樣處理異常:

try {
    // 業(yè)務(wù)邏輯的實(shí)現(xiàn)
} catch (SQLException ex) {
    // 記錄原始異常
    ...
    // 拋出新的異常
    throw new AnotherException(ex);
}

這是由于Throwable基類有了一個可以接受Exception參數(shù)的方法。

總結(jié)

對于異常的了解,我還處于入門階段,雖然平時的項(xiàng)目中也會遇到各種各樣的異常,然后解決異常,但是也只能說是對異常有了一個了解。這里也是總結(jié)一下前人對于異常的經(jīng)驗(yàn)吧。

1.不要過多的使用try...catch,盡量使用邏輯去規(guī)避異常。
2.多重catch塊后面,最好再有個catch塊用來捕獲Exception異常,防止遺漏。
3.盡量去處理異常,不要只是簡單的使用printStackTrace()打印異常。

相信隨著編程經(jīng)歷的豐富,我對于異常的理解也會有更進(jìn)一步的提升。期待自己的Java 異常進(jìn)階。

友情鏈接:https://www.imooc.com/learn/110

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76747.html

相關(guān)文章

  • java學(xué)習(xí)(八) —— 異常異常處理

    摘要:異常發(fā)生時如何處理,提供了解決辦法異常處理機(jī)制。只要在程序中產(chǎn)生了異常,就會用一個對應(yīng)類型的異常對象來封裝異常,會試圖尋找異常處理程序來處理異常。中,異常處理的任務(wù)就是將執(zhí)行控制流從異常發(fā)生的地方轉(zhuǎn)移到能夠處理這種異常的地方去。 前言 概述:異常就是java程序在運(yùn)行過程中出現(xiàn)的錯誤。 異常發(fā)生時如何處理,java提供了解決辦法:異常處理機(jī)制。 java中的異??梢允呛瘮?shù)中的語句執(zhí)行...

    jas0n 評論0 收藏0
  • Java編程思想學(xué)習(xí)錄(連載之:異常

    摘要:系列博文目錄編程思想學(xué)習(xí)錄連載之一切都是對象編程思想學(xué)習(xí)錄連載之初始化與清理編程思想學(xué)習(xí)錄連載之內(nèi)部類編程思想學(xué)習(xí)錄連載之異常本篇文章將講述關(guān)于異常的相關(guān)知識注本文首發(fā)于公眾號,可長按或掃描下面的小心心來訂閱基本概念使用異常來提供一致性的錯 showImg(https://segmentfault.com/img/remote/1460000013228854); Thinking ...

    pkhope 評論0 收藏0
  • JAVA學(xué)習(xí)之路 (七)異常

    摘要:阻止當(dāng)前方法或作用域的,稱為異常。一非檢查異常和,以及她們的子類。強(qiáng)制要求對這類異常做預(yù)備處理使用或者。這樣的異常一般是由程序的運(yùn)行環(huán)境導(dǎo)致的。后跟的是異常對象,或者異常對象的引用。 異常 什么是異常 相異與常態(tài),和正常情況下不一致,有錯誤出現(xiàn)。 阻止當(dāng)前方法或作用域的,稱為異常。 異常分類 showImg(https://segmentfault.com/img/bVbfpnY?w=...

    Nekron 評論0 收藏0
  • Java經(jīng)典

    摘要:請注意,我們在聊聊單元測試遇到問題多思考多查閱多驗(yàn)證,方能有所得,再勤快點(diǎn)樂于分享,才能寫出好文章。單元測試是指對軟件中的最小可測試單元進(jìn)行檢查和驗(yàn)證。 JAVA容器-自問自答學(xué)HashMap 這次我和大家一起學(xué)習(xí)HashMap,HashMap我們在工作中經(jīng)常會使用,而且面試中也很頻繁會問到,因?yàn)樗锩嫣N(yùn)含著很多知識點(diǎn),可以很好的考察個人基礎(chǔ)。但一個這么重要的東西,我為什么沒有在一開始...

    xcold 評論0 收藏0
  • “崩潰了?不可能,我全 Catch 住了” | Java 異常處理

    摘要:允許存在多個,用于針對不同的異常做不同的處理。表示程序可能需要捕獲并且處理的異常。因此,我們應(yīng)該盡可能的避免通過異常來處理正常的邏輯檢查,這樣可以確保不會因?yàn)榘l(fā)生異常而導(dǎo)致性能問題。異常表中的每一條記錄,都代表了一個異常處理器。 showImg(https://segmentfault.com/img/remote/1460000017918154?w=640&h=100); show...

    stdying 評論0 收藏0

發(fā)表評論

0條評論

gghyoo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<