C# 异常处理
異常可以認為是:成員沒有完成,他聲稱可以完成的任務。成員沒有完成他聲稱可以完成的任務,并不一定是該成員自身的原因,也有可能是其他的原因?qū)е碌?。比?#xff1a;該成員調(diào)用的其他成員有問題,或者給該成員的數(shù)據(jù)輸入有問題,導致該成員不能完成任務。
異常處理方式就是try{}catch{]finally{},try{}包含可能出現(xiàn)問題的代碼,catch{} 對可能出現(xiàn)的問題進行捕捉,finally{} 不管有沒有問題最后都要執(zhí)行。
一個try{}對應多個catch{},catch{}的設計理念是,找到第一個匹配的,而不是找到一個最匹配的。因此,當找到第一個匹配的時候,將跳過后面所有的catch{}。根據(jù)這個特點,catch{}的順序應該是,從輩分低的異常到輩分高的異常依次排序。如果反了,后面的catch{}就變成了dead code。
?異常出現(xiàn)了,分為兩種情況:
1、所有的catch都沒有捕捉到,出現(xiàn)了漏網(wǎng)之魚,即未處理的異常。CLR檢測到未處理的異常,會終止進程。這個做法很妥當,因為出現(xiàn)了未處理的異常,CLR不知道會導致什么嚴重的情況,干脆直接終止進程。
2、其中的一個catch{}捕捉到了,進程不會終止。這時候有三個選擇:
- 重新拋出相同的異常
- 拋出一個更詳細的異常
- 讓線程退出
這里需要注意的是,不要拋出一個更抽象的異常,這樣的工作沒有意義,應該暴露給上層更詳細的信息。永遠都不要拋出System.Exception。這就好比,沒有完成任務總要告訴具體的原因。事實上,Microsoft 為了禁止開發(fā)人員拋出System.Exception,把Exception設計為了抽象類,不允許實例化。
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 高效开发 Dubbo?用 Spring
- 下一篇: Python 存储模型