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