C# 正確使用異常的 6 條原則
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
前言編程的世界充滿了挑戰(zhàn)和樂趣,異常就是我們繞不過去的大石頭。 有時候,我們需要主動引發(fā)一些異常; 有時候,我們又需要主動捕捉一些異常; 有時候,我們還需要學(xué)會消滅一些異常; …… 所以,我們需要一套異常使用原則來幫助我們穩(wěn)住船舶,不讓意外攪亂了我們的編程節(jié)奏! 今天,我們就來聊聊六個關(guān)于異常使用的黃金法則,幫助你在這個充滿挑戰(zhàn)的領(lǐng)域中游刃有余。 六大原則1. 不要對在可控范圍內(nèi)的輸入和輸出引發(fā)異常這個原則的意思是, 在編寫代碼時,如果某些輸入或輸出是你可以預(yù)見并且可以控制的,就不要引發(fā)異常。 想象一下,你正在編寫一個計算器應(yīng)用程序。 用戶輸入了兩個數(shù)字,你準(zhǔn)備進(jìn)行除法運(yùn)算。如果用戶輸入的除數(shù)是零,你會怎么做?拋出異常嗎? 不!在這種情況下,你可以簡單地返回一個錯誤消息,或者提示用戶重新輸入。 因?yàn)?,用戶輸入零是可控的,沒必要大驚小怪。
2. 正常的業(yè)務(wù)流程盡可能不要使用異常來處理假設(shè)你正在編寫一個電商網(wǎng)站的訂單處理系統(tǒng)。 如果用戶嘗試購買一個已經(jīng)售罄的商品,你會拋出異常嗎? 當(dāng)然不! 你可以簡單地返回一個“商品已售罄”的消息,或者將用戶引導(dǎo)到其他商品頁面,因?yàn)檫@是一個正常的業(yè)務(wù)邏輯。 異常是用來處理意外情況的,而不是用來處理正常的業(yè)務(wù)流程。
3. 不要總是嘗試去捕獲異常,允許異常往上傳播假設(shè)你正在編寫一個底層的文件處理程序。 如果文件讀取失敗,你需要立即捕獲異常并處理嗎?不一定! 有時候,讓異常向上傳播到更高層的代碼中處理可能更合適。 這樣,你可以集中處理異常,而不是在每個方法中都進(jìn)行捕獲。
4. 如果運(yùn)行代碼后,會造成內(nèi)存泄漏、資源不可用,或者應(yīng)用程序狀態(tài)不可恢復(fù),則引發(fā)異常假設(shè)你正在編寫一個很占內(nèi)存的操作。 如果操作可以導(dǎo)致內(nèi)存占用過高,你會怎么做?拋出異常!因?yàn)槿绻麅?nèi)存占用過高,應(yīng)用程序的狀態(tài)將不可恢復(fù)。 在這種情況下,拋出異常是必要的。
5. 在捕獲異常的時候,如果需要包裝一些更有用的信息,則引發(fā)異常這類異常的引發(fā)在 UI 層特別有用。 系統(tǒng)引用的異常所帶的信息往往更傾向于技術(shù)性的描述; 而在 UI 層,面對異常的很可能是最終普通用戶,所以如果需要將異常的信息呈現(xiàn)給最終用戶,更好的做法明顯是先包裝異常,然后引發(fā)一個包含友好信息的新異常。
6. 如果底層異常在高層操作的上下文中沒有意義,那么在捕獲這些異常時,引發(fā)新的有意義的異常假設(shè)你正在調(diào)用 Windows API 或第三方 API 提供的接口時,如果對方的異常報告機(jī)制使用的是錯誤代碼,很不好理解,這時你會怎么辦? 最好的方法是重新引發(fā)該接口提供的錯誤,創(chuàng)建一個新的更有意義的異常,因?yàn)槟阈枰寛F(tuán)隊更好地理解這些錯誤。
總結(jié)在編程的世界里,異常處理是一門藝術(shù)。 本文我們一起探討了六個關(guān)于異常使用的黃金法則。 好的異常使用原則就像是為我們的代碼設(shè)置了安全帶。 記住,異常不是敵人,而是提示我們需要關(guān)注的地方。 閱讀原文:原文鏈接 該文章在 2025/3/11 18:03:22 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |