C#中类的异常处理
歡迎您成為我的讀者,希望這篇文章能給你一些幫助。
前言
日常編碼過程中,最重要的技能不是說你學(xué)會(huì)使用很多最新的編程技術(shù)或者做出一個(gè)高大上的系統(tǒng)。而是你在寫代碼過程中,對異常的處理,是否系統(tǒng)可以穩(wěn)定,健壯。
對于異常的處理在C#中是通過try/cath機(jī)制來捕獲的,接下來我們一起來看看。
異常是程序中的運(yùn)行時(shí)錯(cuò)誤,它違反了系統(tǒng)約束或應(yīng)用程序約束,或出現(xiàn)了在正常操作時(shí)未預(yù)料的情形。
比如對于某些變量的非正常賦值或者在參與運(yùn)算操作時(shí)出現(xiàn)錯(cuò)誤等。
異常
關(guān)于異常,在C#中通過try語句和處理異常機(jī)制類保證異常的捕獲,防止由于異常的未捕獲導(dǎo)致整個(gè)程序出現(xiàn)異常提醒,甚至出現(xiàn)崩潰。
異常的要求
try塊包含為避免出現(xiàn)異常而被保護(hù)的代碼
catch子句部分含有一個(gè)或多個(gè)catch子句。(處理異常代碼段也叫做異常處理子程序)
finally塊含有在所有情況下都要被執(zhí)行的代碼,無論有沒有異常發(fā)生。
在處理業(yè)務(wù)代碼時(shí),必須在剛開始就將邏輯上的錯(cuò)誤都考慮清楚進(jìn)行驗(yàn)證處理,比如判空,非正常值,值類型錯(cuò)誤等。
其次在通過try/catch機(jī)制來捕獲非正常的異常,防止程序出現(xiàn)無法把控的錯(cuò)誤,導(dǎo)致崩潰。
提示:在業(yè)務(wù)程序中盡量少用異常進(jìn)行捕獲,如果條件滿足要第一時(shí)間對異常進(jìn)行前期處理。<Catch()中的異常處理時(shí)間會(huì)比較長,而且會(huì)導(dǎo)致系統(tǒng)資源被浪費(fèi)(異常實(shí)時(shí)被往上拋出)。>
在C#中有很多不同類型的異常可能被發(fā)生,BCL定義了許多類,每一個(gè)類代表一個(gè)指定的異常類型。當(dāng)一個(gè)異常發(fā)生時(shí),CLR首先創(chuàng)建該類型的異常對象,其次尋找適當(dāng)?shù)腸atch子句以處理它。(所有的異常類都派生自System.Exception類)
關(guān)于catch()有三種形式,可以處理不同級別的異常。
第一種 一般異常處理
try{}catch{//一般異常處理}能接受任何異常,但不能確認(rèn)引起異常的類型。可對可能發(fā)生的異常進(jìn)行普通處理和清理。
第二種 特定異常處理
try}catch(Exception){//特定異常處理}把一個(gè)異常類的名稱作為參數(shù),匹配該指定類或派生自它的異常類的異常。
第三種 ?帶對象的特定異常處理
try}catch(Exception?ex){throw?new?Exception(ex.Message);}可提供關(guān)于異常的多種異常信息,匹配指定的異常或派生自它的異常類的異常。通過異常實(shí)例,可得到異常的詳細(xì)信息。
try}catch?(Exception?ex){//特定異常處理throw?new?Exception(ex.Message);}finally?{?//出現(xiàn)異常后的處理機(jī)制}這里需要特別說明下,關(guān)于finally中的代碼,不管異常是否被捕獲,它都會(huì)被執(zhí)行。
在finally中適合存放釋放資源或后續(xù)處理的代碼。
基礎(chǔ)知識(shí)日更已經(jīng)29天,如果大家還想繼續(xù)查詢,可以給個(gè)關(guān)注,感謝您的支持。
寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看得見的。
原創(chuàng)不易,給個(gè)關(guān)注。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點(diǎn)贊、轉(zhuǎn)發(fā) ?謝謝。
很高興能和您成為朋友。
推薦閱讀
分享給同做程序員的你我他
畢業(yè)四年,我當(dāng)初是如何走上編程這條路的!
物聯(lián)網(wǎng)工程專業(yè)的迷茫與抉擇
總結(jié)
- 上一篇: 使用C# 探索 ML.NET 中的不同机
- 下一篇: C# 使用多个异步方法