如何編寫沒有Try Catch的程式

2021-09-22 23:26:05 字數 3318 閱讀 5344

在上面一篇文章《談談關於mvp模式中v-p互動問題》中,我提到最近一直為乙個專案進行code review的工作,從中發現了一些問題,同時也有了一些想法。上次談到如何正確編寫服務mvp規範的程式,這次我們來關注乙個我們每天都會面對的問題:異常處理。

個人覺得,異常處理對於程式設計師來說,尤其是對於那些初級.net程式設計師來說,是最為熟悉的同時也是最難掌握的。說它熟悉,因為僅僅就是try/catch而已。說它難以掌握,很多開發人員卻說不清楚try/catch應該置於何處?什麼情況下需要對異常進行日誌記錄?什麼情況下需要對異常進行封裝?什麼情況下需要對異常進行替換?對於捕獲的異常,在什麼情況下需要將其再次丟擲?什麼情況下則不需要。總之,異常處理沒有我們想象的那麼簡單。

「異常處理對於最終的開發人員是透明的」,可能這句話說得有點過頭。但是,就我個人的專案經驗來講,這是一種理想的狀態。由於異常策略是一般是通過配置動態配置的,不需要反映在**上面。如果能夠通過框架的方式提供異常處理的實現,使開發人員無需編寫任何異常處理的**,只需要關注業務流程的實現就可以了,這不僅能夠提高開發的效率,也能夠提高系統的可維護性。

1:

private

void buttoncalculate_click(object sender, eventargs e)

2:
7:

catch (exception ex)

8:
13:     }
14:
15: }
我是乙個對重複**具有強迫症的人,看到兩個相同的**我都有對**進行重構的衝動,何況如此眾多的相同**充斥在客戶端。

為了避免開發人員編寫相同的try/catch,很多人首先想到的肯定是將重複**定義在乙個公共的方法上,以實現**的復用。這個公共方法很簡單,只需要如下幾句**即可。

1:

public

void invoke(action action)

2:
7:

catch (exception ex)

8:
13:     }
14: }
在呼叫的時候,只需要將相應的操作以action型別的delegate的形式傳入invoke方法即可。但是這樣,也會在所有控制項處理事件**現重複的invoke呼叫,雖然重複的**行數減少了,但是還是會出現大規模的重複。接下裡我來介紹另一種解決方法。

認真分析上面的需求,我們的根本目的就是讓執行事件處理程式的時候在外面人為地套乙個try/catch,並對捕獲的異常進行相應的處理。從這個意義上講,如果我們能夠對eventhandler或者exventhandler進行相應的封裝,就能實現我們需要的目的。

12:
17:     }
18: }
微博:

蔣金楠的自**將會停用)。

如何編寫沒有工作經驗的簡歷

寫簡歷已經是乙個很大的挑戰,如果你想申請新的工作,你只需要接受教育就可以嗎?對於剛畢業的應屆生而言,這是乙個令人沮喪的時刻。即使你覺得自己有資格勝任這份工作,你的簡歷仍然是首要考慮的事,它會在你面試之前向你的潛在雇主介紹你自己。姓名和聯絡資訊 職業目標 作為一名經驗不足的新畢業生,您的目標是簡歷中的...

關於 try catch如何正確使用

經常看到php函式一呼叫接下來就使用 if 成功或失敗的返回值 來判斷,好繁瑣,不明所以,用try catch明明函式呼叫出錯了卻捕捉不到錯誤,於是思考try catch 到底該如何正確使用?忽然想到這個原因可能就跟呼叫函式的try catch 或類似錯誤處理有關 即 函式定義是不是最好都使用 tr...

如何使用 TRY CATCH 語句避免死鎖

死鎖是正常現象不可避免。發生死鎖會犧牲乙個程序並回滾事務,sql不會自己重試,需要用try catch和waitfor實現重試。具體方法如下 如何使用 try catch 語句避免死鎖 現在,讓我們來使用 try catch 語句修改 正文。對於本示例,需要以 sql server 2005 版本執...