溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java的異常處理是什么

發(fā)布時(shí)間:2020-06-29 14:53:00 來源:億速云 閱讀:163 作者:元一 欄目:編程語言

java的異常處理是什么?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

什么是java異常處理

1、異常

異常處理,英文名為exceptional handling, 是代替日漸衰落的error code方法的新法,提供error code 所未能具體的優(yōu)勢(shì)。異常處理分離了接收和處理錯(cuò)誤代碼。這個(gè)功能理清了編程者的思緒,也幫助代碼增強(qiáng)了可讀性,方便了維護(hù)者的閱讀和理解。 異常處理(又稱為錯(cuò)誤處理)功能提供了處理程序運(yùn)行時(shí)出現(xiàn)的任何意外或異常情況的方法。異常處理使用 try、catch 和 finally 關(guān)鍵字來嘗試可能未成功的操作,處理失敗,以及在事后清理資源。

2、異常處理機(jī)制

Java提供了更加優(yōu)秀的解決辦法:異常處理機(jī)制。

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

Java中的異常可以是函數(shù)中的語句執(zhí)行時(shí)引發(fā)的,也可以是程序員通過throw 語句手動(dòng)拋出的,只要在Java程序中產(chǎn)生了異常,就會(huì)用一個(gè)對(duì)應(yīng)類型的異常對(duì)象來封裝異常,JRE就會(huì)試圖尋找異常處理程序來處理異常。

Throwable類是Java異常類型的頂層父類,一個(gè)對(duì)象只有是 Throwable 類的(直接或者間接)實(shí)例,他才是一個(gè)異常對(duì)象,才能被異常處理機(jī)制識(shí)別。JDK中內(nèi)建了一些常用的異常類,我們也可以自定義異常。

3、異常的處理:

異常的處理分為消極的處理(自己處理不了,就往調(diào)用它的地方上拋throws,異常沒有解決,只是拋出)和積極處理(異常捕獲,捕捉異常通過try-catch語句或者try-catch-finally語句實(shí)現(xiàn))

a) 消極的處理:

語法:

public void m1() throws 異常類名1,異常類名2{}

特點(diǎn):相當(dāng)于推卸責(zé)任,最終問題依然無法得到解決。

允許編譯通過。

當(dāng)上拋的異常為非運(yùn)行(已檢查)時(shí)異常時(shí),調(diào)用此方法的調(diào)用者必須處理。

當(dāng)上拋的異常為運(yùn)行(未檢查)時(shí)異常時(shí),可以處理可以不處理。

b) 積極的處理:(異常捕獲)

將異常直接捕獲,并且做出處理

語法:

try{
  //異常代碼
}catch(異常類名 引用名){  
//當(dāng)異常產(chǎn)生執(zhí)行的代碼
}

try 后的catch代碼塊 只能匹配成功一個(gè)

catch后聲明的異常為父類時(shí),它能夠捕捉的異常為它本身+所有子類異常(多態(tài)的體現(xiàn))

注意:catch代碼塊捕獲異常時(shí),子類異常必須定義在父類異常前面,否則會(huì)編譯出錯(cuò)

finally代碼塊:一定會(huì)執(zhí)行此代碼塊中的代碼,常用來關(guān)閉資源,

try{
}catch(){
}finally{
//無論是否產(chǎn)生異常,一定會(huì)去執(zhí)行的代碼
}

注意:finally代碼塊中不要定義return語句

4、異常的特性:

應(yīng)用程序遇到異常情況(如被零除情況或內(nèi)存不足警告)時(shí),就會(huì)產(chǎn)生異常。

發(fā)生異常時(shí),控制流立即跳轉(zhuǎn)到關(guān)聯(lián)的異常處理程序(如果存在)。

如果給定異常沒有異常處理程序,則程序?qū)⑼V箞?zhí)行,并顯示一條錯(cuò)誤信息。

可能導(dǎo)致異常的操作通過 try 關(guān)鍵字來執(zhí)行。

異常處理程序是在異常發(fā)生時(shí)執(zhí)行的代碼塊。在 C# 中,catch 關(guān)鍵字用于定義異常處理程序。

程序可以使用 throw 關(guān)鍵字顯式地引發(fā)異常。

異常對(duì)象包含有關(guān)錯(cuò)誤的詳細(xì)信息,其中包括調(diào)用堆棧的狀態(tài)以及有關(guān)錯(cuò)誤的文本說明。

即使引發(fā)了異常,finally 塊中的代碼也會(huì)執(zhí)行,從而使程序可以釋放資源。

5、關(guān)鍵字:throws,throw,try,catch,finally 分別代表什么意義?

throws 是獲取異常

throw 是拋出異常

try 是將會(huì)發(fā)生異常的語句括起來,從而進(jìn)行異常的處理,也可以在 try 塊中拋出新的異常

catch 是如果有異常就會(huì)執(zhí)行他里面的語句

finally 不論是否有異常都會(huì)進(jìn)行執(zhí)行的語句

關(guān)于java的異常處理是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI