C#異常處理的相關(guān)介紹
C#異常處理:結(jié)構(gòu)化異常處理
.NET框架提供一種標(biāo)準(zhǔn)的錯(cuò)誤報(bào)告機(jī)制稱為結(jié)構(gòu)化異常處理。這種機(jī)制依賴于應(yīng)用中報(bào)告錯(cuò)誤的異常。
在.NET中,異常是一些提供錯(cuò)誤信息的類,你可以某種方式編寫(xiě)代碼監(jiān)視異常的發(fā)生,然后以一種適當(dāng)?shù)姆椒ㄌ幚懋惓!?/P>
在進(jìn)行C#異常處理時(shí),你需要在代碼中關(guān)注三個(gè)部分:可能導(dǎo)致異常的代碼段(這也通常稱為拋出異常)。當(dāng)執(zhí)行代碼過(guò)程中發(fā)生異常時(shí)將要執(zhí)行的代碼段(這也通常稱為捕獲異常)。
異常處理后要執(zhí)行的代碼段(可選的)(這也通常稱為結(jié)束塊)。
異常類
在.NET框架中的異常類都派生自SystemException 類。這個(gè)類的大部分常用成員如下:
HelpLink是一個(gè)鏈接到幫助文件的鏈接,該幫助文件提供異常的相關(guān)信息。
Message是指明一個(gè)錯(cuò)誤細(xì)節(jié)的文本。
Source導(dǎo)致異常的對(duì)象或應(yīng)用的名稱。
StackTrace是堆棧中調(diào)用的方法列表。
TargetSite是拋出異常的方法名稱。
Try/Catch/Finally 塊
C#中使用Try/Catch/Finally塊處理一個(gè)異常。
Try語(yǔ)句指明在執(zhí)行過(guò)程中需要監(jiān)視拋出異常的代碼塊。
Catch語(yǔ)句指明了在執(zhí)行了Try代碼塊后應(yīng)該執(zhí)行的代碼塊。這個(gè)代碼塊無(wú)論異常是否發(fā)生都會(huì)執(zhí)行。實(shí)際上,它常用于可能要求的清理代碼。
C#異常處理:捕獲所有異常
.NET允許你監(jiān)視某個(gè)特定代碼段中發(fā)生的任何異常;然而,你可以指明具體的異常,列表A顯示捕獲所有異常。為了演示如何監(jiān)視異常這個(gè)代碼包含了一個(gè)錯(cuò)誤。在列表A,通過(guò)聲明一個(gè)異常類型的ex變量,可以捕獲try關(guān)鍵字后可能發(fā)生的任何異常;無(wú)論代碼中出現(xiàn)何種類型的錯(cuò)誤,catch語(yǔ)句塊都將執(zhí)行。此外,即使發(fā)生一個(gè)錯(cuò)誤(無(wú)論何種類型),finally代碼塊將會(huì)執(zhí)行。
C#異常處理:捕獲特定異常
列表B顯示了如何捕獲一個(gè)特定的異常。為了演示捕獲異常這段代碼包含一個(gè)錯(cuò)誤。在列表B,通過(guò)聲明一個(gè)DivideByZeroException類型的變量ex,當(dāng)代碼執(zhí)行時(shí)捕獲了一個(gè)特定異常(DivideByZeroException)。只有這種類型的錯(cuò)誤發(fā)生時(shí)才會(huì)執(zhí)行catch關(guān)鍵字后的語(yǔ)句。此外,即使發(fā)生一個(gè)錯(cuò)誤(在這種情況下的任何類型錯(cuò)誤),finally語(yǔ)句塊將會(huì)執(zhí)行。
【編輯推薦】