Java 異常處理一
發(fā)表時(shí)間:2024-05-26 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]用異常來處理錯(cuò)誤 我們總是試圖避免在軟件程序中錯(cuò)誤的發(fā)生,但是它的存在卻是不幸的實(shí)事。無論怎樣,如果你能適當(dāng)?shù)奶幚礤e(cuò)誤,將會(huì)極大的改善程序的可讀性、可靠性以及可維護(hù)性。Java編程語(yǔ)言使用異常來處理錯(cuò)誤。這章主要講述在什么時(shí)候和怎樣使用異常來處理錯(cuò)誤。 什么是異常? Java編程語(yǔ)...
用異常來處理錯(cuò)誤
我們總是試圖避免在軟件程序中錯(cuò)誤的發(fā)生,但是它的存在卻是不幸的實(shí)事。無論怎樣,如果你能適當(dāng)?shù)奶幚礤e(cuò)誤,將會(huì)極大的改善程序的可讀性、可靠性以及可維護(hù)性。Java編程語(yǔ)言使用異常來處理錯(cuò)誤。這章主要講述在什么時(shí)候和怎樣使用異常來處理錯(cuò)誤。
什么是異常?
Java編程語(yǔ)言使用異常機(jī)制為程序提供了錯(cuò)誤處理的能力。一個(gè)異常是在程序執(zhí)行期間發(fā)生的一個(gè)事件,它使用正常的指令流中斷。
捕獲或指定需求
這段講述捕獲和處理異常。在討論中包括:try,catch和finally程序塊,還有異常鏈和日志。
怎樣拋出異常
這段講述異常拋出語(yǔ)句和Throwable類以及它的子類。
有關(guān)未檢查的異常爭(zhēng)論
因?yàn)镴ava編程語(yǔ)言不要求捕獲或指定運(yùn)行時(shí)異;蝈e(cuò)誤的方法,所以程序員會(huì)被誘導(dǎo)來編寫只拋出運(yùn)行時(shí)異常代碼,在這段中我們會(huì)解釋為什么不應(yīng)該被誘導(dǎo)。
異常的好處
在這段中,你將會(huì)學(xué)到更多的使用異常來管理錯(cuò)誤優(yōu)于傳統(tǒng)的錯(cuò)誤管理技術(shù)方面的知識(shí)。
什么是異常?
異常(exception)應(yīng)該是異常事件(exceptional event)的縮寫。
異常定義:異常是一個(gè)在程序執(zhí)行期間發(fā)生的事件,它中斷正在執(zhí)行的程序的正常的指令流。
當(dāng)在一個(gè)方法中發(fā)生錯(cuò)誤的時(shí)候,這個(gè)方法創(chuàng)建一個(gè)對(duì)象,并且把它傳遞給運(yùn)行時(shí)系統(tǒng)。這個(gè)對(duì)象被叫做異常對(duì)象,它包含了有關(guān)錯(cuò)誤的信息,這些信息包括錯(cuò)誤的類型和在程序發(fā)生錯(cuò)誤時(shí)的狀態(tài)。創(chuàng)建一個(gè)錯(cuò)誤對(duì)象并把它傳遞給運(yùn)行時(shí)系統(tǒng)被叫做拋出異常。
一個(gè)方法拋出異常后,運(yùn)行時(shí)系統(tǒng)就會(huì)試著查找一些方法來處理它。這些處理異常的可能的方法的集合是被整理在一起的方法列表,這些方法能夠被發(fā)生錯(cuò)誤的方法調(diào)用。這個(gè)方法列表被叫做堆棧調(diào)用(callstack),調(diào)用方式如下圖所示(圖片參見附件)
運(yùn)行時(shí)系統(tǒng)搜尋包含能夠處理異常的代碼塊的方法所請(qǐng)求的堆棧。這個(gè)代碼塊叫做異常處理器,搜尋首先從發(fā)生的方法開始,然后依次按著調(diào)用方法的倒序檢索調(diào)用堆棧。當(dāng)找到一個(gè)相應(yīng)的處理器時(shí),運(yùn)行時(shí)系統(tǒng)就把異常傳遞給這個(gè)處理器。一個(gè)異常處理器要適當(dāng)?shù)乜紴V拋出的異常對(duì)象的類型和異常處理器所處理的異常的類型是否匹配。異常被捕獲以后,異常處理器關(guān)閉。如果運(yùn)行時(shí)系統(tǒng)搜尋了這個(gè)方法的所有的調(diào)用堆棧,而沒有找到相應(yīng)的異常處理器,如下圖所示,運(yùn)行進(jìn)系統(tǒng)將終止執(zhí)行。(圖片參見附件)
使用異常來管理錯(cuò)誤比傳統(tǒng)的錯(cuò)誤管理技術(shù)有一些優(yōu)勢(shì),你可以“異常的優(yōu)勢(shì)”一節(jié)學(xué)到更多的知識(shí)