C#中類(lèi)的異常處理詳解
前言
日常編碼過(guò)程中,最重要的技能不是說(shuō)你學(xué)會(huì)使用很多最新的編程技術(shù)或者做出一個(gè)高大上的系統(tǒng)。而是你在寫(xiě)代碼過(guò)程中,對(duì)異常的處理,是否系統(tǒng)可以穩(wěn)定,健壯。
對(duì)于異常的處理在C#中是通過(guò)try/cath機(jī)制來(lái)捕獲的,接下來(lái)我們一起來(lái)看看。
異常是程序中的運(yùn)行時(shí)錯(cuò)誤,它違法了系統(tǒng)約束或應(yīng)用程序約束,或出現(xiàn)了在正常操作時(shí)未預(yù)料的情形。
比如對(duì)于某些變量的非正常賦值或者在參與運(yùn)算操作時(shí)出現(xiàn)錯(cuò)誤等。
異常
關(guān)于異常,在C#中通過(guò)try語(yǔ)句和處理異常機(jī)制類(lèi)保證異常的捕獲,防止由于異常的未捕獲導(dǎo)致整個(gè)程序出現(xiàn)異常提醒,甚至出現(xiàn)崩潰。
異常的要求
try塊包含為避免出現(xiàn)異常而被保護(hù)的代碼
catch子句部分含有一個(gè)或多個(gè)catch子句。(處理異常代碼段也叫做異常處理子程序)
finally塊含有在所有情況下都要被執(zhí)行的代碼,無(wú)論有沒(méi)有異常發(fā)生
class Program { static void Main(string[] args) { try { //驗(yàn)證是否有異常的代碼 Ahui hui = new Ahui(); InfoBase info = (InfoBase)hui; Console.WriteLine(hui.GetInfo()); Console.WriteLine(info.GetInfo()); } catch (Exception ex) { //捕獲異常,進(jìn)行異常的處理 throw new Exception("異常向上一層拋出!"); } Console.ReadKey(); } }
在處理業(yè)務(wù)代碼時(shí),必須在剛開(kāi)始就將邏輯上的錯(cuò)誤都考慮清楚進(jìn)行驗(yàn)證處理,比如判空,非正常值,值類(lèi)型錯(cuò)誤等。
其次在通過(guò)try/catch機(jī)制來(lái)捕獲非正常的異常,防止程序出現(xiàn)無(wú)法把控的錯(cuò)誤,導(dǎo)致奔潰。
提示:在業(yè)務(wù)程序中盡量少用異常進(jìn)行捕獲,如果條件滿足要第一時(shí)間對(duì)異常進(jìn)行前期處理。<Catch()中的異常處理時(shí)間會(huì)比較長(zhǎng),而且會(huì)導(dǎo)致系統(tǒng)資源被浪費(fèi)(異常實(shí)時(shí)被往上拋出)。>
在C#中有很多不同類(lèi)型的異常可能被發(fā)生,BCL定義了許多類(lèi),每一個(gè)類(lèi)代表一個(gè)指定的異常類(lèi)型。當(dāng)一個(gè)異常發(fā)生時(shí),CLR首先創(chuàng)建該類(lèi)型的異常對(duì)象,其次尋找適當(dāng)?shù)腸atch子句以處理它。(所有的異常類(lèi)都派生自System.Exception類(lèi))
關(guān)于catch()有三種形式,可以處理不同級(jí)別的異常。
第一種 一般異常處理
try { } catch { //一般異常處理 }
能接受任何異常,但不能確認(rèn)引起異常的類(lèi)型。可對(duì)可能發(fā)生的異常進(jìn)行普通處理和清理。
第二種 特定異常處理
try } catch(Exception) { //特定異常處理 }
把一個(gè)異常類(lèi)的名稱(chēng)作為參數(shù),匹配該指定類(lèi)或派生自它的異常類(lèi)的異常。
第三種 帶對(duì)象的特定異常處理
try } catch(Exception ex) { throw new Exception(ex.Message); }
可提供關(guān)于異常的多種異常信息,匹配指定的異?;蚺缮运漠惓n?lèi)的異常。通過(guò)異常實(shí)例,可得到異常的詳細(xì)信息。
try } catch (Exception ex) { //特定異常處理 throw new Exception(ex.Message); } finally { //出現(xiàn)異常后的處理機(jī)制 }
這里需要特別說(shuō)明下,關(guān)于finally中的代碼,不管異常是否被捕獲,它都會(huì)被執(zhí)行。
在finally中適合存放釋放資源或后續(xù)處理的代碼。
基礎(chǔ)知識(shí)日更已經(jīng)29天,如果大家還想繼續(xù),可以給個(gè)關(guān)注,感謝您的支持。
寄語(yǔ)
人生短暫,我不想去追求自己看不見(jiàn)的,我只想抓住我能看得見(jiàn)的。
總結(jié)
到此這篇關(guān)于C#中類(lèi)的異常處理詳解的文章就介紹到這了,更多相關(guān)C#類(lèi)異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

C#截取中英文混合指定長(zhǎng)度字符串實(shí)例

c# 使用特定帳號(hào)密碼訪問(wèn)Windows網(wǎng)路共享

C# listview 點(diǎn)擊列頭排序的實(shí)例

C# 實(shí)現(xiàn)PPT 每一頁(yè)轉(zhuǎn)成圖片過(guò)程解析

C#操作mysql數(shù)據(jù)庫(kù)的代碼實(shí)例