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

資訊專(zhuān)欄INFORMATION COLUMN

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

jas0n / 2521人閱讀

摘要:異常發(fā)生時(shí)如何處理,提供了解決辦法異常處理機(jī)制。只要在程序中產(chǎn)生了異常,就會(huì)用一個(gè)對(duì)應(yīng)類(lèi)型的異常對(duì)象來(lái)封裝異常,會(huì)試圖尋找異常處理程序來(lái)處理異常。中,異常處理的任務(wù)就是將執(zhí)行控制流從異常發(fā)生的地方轉(zhuǎn)移到能夠處理這種異常的地方去。

前言

概述:異常就是java程序在運(yùn)行過(guò)程中出現(xiàn)的錯(cuò)誤。

異常發(fā)生時(shí)如何處理,java提供了解決辦法:異常處理機(jī)制。

java中的異??梢允呛瘮?shù)中的語(yǔ)句執(zhí)行時(shí)引發(fā)的,也可以是程序員通過(guò)throw語(yǔ)句手動(dòng)拋出。

只要在java程序中產(chǎn)生了異常,就會(huì)用一個(gè)對(duì)應(yīng)類(lèi)型的異常對(duì)象來(lái)封裝異常,JRE會(huì)試圖尋找異常處理程序來(lái)處理異常。

JDK中內(nèi)建類(lèi)一些常見(jiàn)的異常類(lèi),我們也可以自定義異常。

Throwable類(lèi)是java異常類(lèi)型的頂層父類(lèi),一個(gè)對(duì)象只有是Throwable類(lèi)的直接或間接實(shí)例,他才是一個(gè)異常對(duì)象,才能被異常處理機(jī)制識(shí)別。

異常分類(lèi)

檢查性異常:

(1)最具代表性的檢查性異常是用戶(hù)錯(cuò)誤或問(wèn)題引起的異常,這是程序員無(wú)法預(yù)測(cè)的。
(2)例如要打開(kāi)一個(gè)不存在文件時(shí),一個(gè)異常就發(fā)生了,這些異常在編譯時(shí)不能被簡(jiǎn)單的忽略。

運(yùn)行時(shí)異常:

(1)運(yùn)行時(shí)異常是可能被程序員避免的異常。
(2)與檢查性異常相反,運(yùn)行時(shí)異??梢栽诰幾g時(shí)被忽略。

錯(cuò)誤:

(1)錯(cuò)誤不是異常,而是脫離程序員控制的問(wèn)題。
(2)錯(cuò)誤在代碼中通常被忽略。
(3)例如,當(dāng)棧溢出時(shí),一個(gè)錯(cuò)誤就發(fā)生了,它們?cè)诰幾g時(shí)也是檢查不到的。

異常分類(lèi)圖解:

Error和Exception類(lèi)

java標(biāo)準(zhǔn)庫(kù)內(nèi)建了一些通用的異常,這些類(lèi)以Throwable為頂層父類(lèi)。

Throwable又派生出Error類(lèi)和Exception類(lèi)。

Error類(lèi):

(1)Error類(lèi)以及他的子類(lèi)的實(shí)例,代表了JVM本身的錯(cuò)誤。
(2)錯(cuò)誤不能被程序員通過(guò)代碼處理,Error很少出現(xiàn)。
(3)因此,程序員應(yīng)該關(guān)注Exception為父類(lèi)的分支下的各種異常類(lèi)

Exception類(lèi):

(1)Exception及他的子類(lèi),代表程序運(yùn)行時(shí)發(fā)送的各種不期望發(fā)生的事件。
(2)可以被java異常處理機(jī)制使用,是異常處理的核心。

異常處理

異常處理機(jī)制能讓程序在發(fā)生異常時(shí),按照代碼預(yù)先設(shè)定的異常處理邏輯,針對(duì)性的處理異常,讓程序盡最大可能的恢復(fù)正常并繼續(xù)執(zhí)行,且保持代碼的清晰。

java中,異常處理的任務(wù)就是將執(zhí)行控制流從異常發(fā)生的地方轉(zhuǎn)移到能夠處理這種異常的地方去。

在編寫(xiě)代碼處理異常時(shí),對(duì)于檢查異常,有兩種處理方式:

(1)使用try...catch...finally語(yǔ)句塊處理
(2)在函數(shù)簽名中使用throws聲明交給函數(shù)調(diào)用者caller去解決

try...catch...finally語(yǔ)句塊:

(1)try塊中放可能發(fā)生異常的代碼;
(2)如果執(zhí)行完try并且不發(fā)生異常,則接著去執(zhí)行finally塊代碼以及finally之后的代碼;
(3)如果執(zhí)行try中代碼發(fā)生異常,就會(huì)嘗試匹配catch塊;
(4)每一個(gè)catch塊用于處理一個(gè)異常;
(5)異常匹配是按照catch塊的順序從上往下尋找的,只有第一個(gè)會(huì)匹配到的catch塊會(huì)被執(zhí)行。
(6)try塊中的局部變量和catch塊中的局部變量,以及finally中的局部變量,它們之間不可以共享使用;
(7)finally塊不管異常是否發(fā)生,只要對(duì)應(yīng)的try塊執(zhí)行了,它一定會(huì)執(zhí)行。
(8)finally塊通常用來(lái)做資源釋放操作,關(guān)閉文件或者關(guān)閉數(shù)據(jù)庫(kù)等操作。

throws/throw:

(1)如果一個(gè)方法沒(méi)有捕獲到一個(gè)檢查性異常,那么該方法必須使用 throws 關(guān)鍵字來(lái)聲明。
(2)throws 關(guān)鍵字放在方法簽名的尾部。
(3)throws僅僅是將函數(shù)中可能出現(xiàn)的異常向調(diào)用者聲明,而自己并不處理異常。
(4)采用這種異常處理的原因可能是:方法本身不知道如何處理這種異常,或者說(shuō)讓調(diào)用者處理更好,調(diào)用者需要為可能發(fā)生的異常負(fù)責(zé)。
(5)也可以使用 throw 關(guān)鍵字手動(dòng)拋出一個(gè)異常,無(wú)論它是新實(shí)例化的還是剛捕獲到的。
(6)throw語(yǔ)句的后面必須是一個(gè)異常對(duì)象。

參考鏈接

http://www.importnew.com/2661...

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

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

相關(guān)文章

  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己進(jìn)行查漏補(bǔ)缺,覺(jué)得本文對(duì)你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級(jí)篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類(lèi)知識(shí)點(diǎn),你也可以按照文章中所列的知識(shí)體系對(duì)比自身,對(duì)自己...

    huaixiaoz 評(píng)論0 收藏0
  • 自己整理的java編程規(guī)范

    摘要:努力避免硬編碼。一個(gè)類(lèi)的總體行數(shù)盡量控制在行左右不超過(guò)一千行。函數(shù)注釋函數(shù)注釋采用,在每個(gè)函數(shù)或者過(guò)程的前面要有必要的注釋信息,包括函數(shù)或過(guò)程名稱(chēng)功能描述輸入輸出及返回值說(shuō)明調(diào)用關(guān)系及被調(diào)用關(guān)系說(shuō)明等。 前言 推薦Google的Java編碼規(guī)范英文版: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 雖然...

    yedf 評(píng)論0 收藏0
  • java異常那些事

    摘要:一拋出異常發(fā)現(xiàn)錯(cuò)誤異常也是對(duì)象使用使用異常機(jī)制來(lái)報(bào)告錯(cuò)誤。異常也是普通的類(lèi)類(lèi)型。異常聲明中的語(yǔ)句執(zhí)行完成后會(huì)繼續(xù)執(zhí)行后的其他語(yǔ)句。非檢查異常拋出到上一級(jí)時(shí)可以不用進(jìn)行聲明合理的使用非檢查異??梢院?jiǎn)化代碼。 為什么需要異常機(jī)制: Java的基本理念是結(jié)構(gòu)不佳的代碼不能運(yùn)行 --- Java編程思想 最理想的是在編譯時(shí)期就發(fā)現(xiàn)錯(cuò)誤,但一些錯(cuò)誤要在運(yùn)行時(shí)才會(huì)暴露出來(lái)。對(duì)于這些錯(cuò)誤我們當(dāng)然不能...

    Kyxy 評(píng)論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)

    摘要:楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),。本文來(lái)源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲(chóng)軟件定制開(kāi)發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類(lèi)信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專(zhuān)業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲(chóng)學(xué)習(xí)系列教程(來(lái)源于某博主:htt...

    KunMinX 評(píng)論0 收藏0
  • ApacheCN 人工智能知識(shí)樹(shù) v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問(wèn)我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書(shū)一本書(shū)看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書(shū)的章節(jié)拆開(kāi),再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹(shù)。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<