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