發表文章

目前顯示的是有「Exception Handling Application Block」標籤的文章

MS Enterprise Library 6.0 (四) - Policy Injection Application Block

如果說 Unity Application Block 可以算得上是一份美味的佳餚,那 Policy Injection Application Block 絕對稱得上是開發人員最華麗的盛宴了。 要介紹Policy Injection Application Block之前,得提醒讀者,建議您先熟悉先前介紹過的 Exception Handling Application Block 以及 Logging Application Block ,因為我們待會要利用 Policy Injection Application Block 來作一個應用大集合。 首先,請你回憶一下Exception Handling Application Block,以及想像一下Exception Handling Application Block會怎麼用在你的系統中,以及怎麼幫助你以一個單一的例外處理模塊來管理你開發的系統的Exception... 不要偷懶,想像一下... ... ... ... ... ... 好,接著我們回到現實面,你會發現,我們前面說過,可以透過Exception Handling Application Block來管理例外,提供一個統一的方式來處理各種不同可能的例外...這樣很好,我們的系統透過這樣的設計,已經大幅的將耦合性降低,並且提高了重用性,這樣還有什麽讓人不滿意的地方呢? 有的,當程式碼愈趨鬆耦合時,我們開始看try...catch不太順眼。此話怎說??? 請看下面這塊典型的try...catcah: public void MethodA() { try { int a = 10, b = 0; a = a / b; } catch (Exception ex) { //以Config檔案中的 "Policy" ExceptionPolicy設定來處理 var rethrow = ExceptionPolicy.HandleException(ex, "Policy"); //如果設定檔說要重丟例外,就重丟 if (rethrow) throw; ...

MS Enterprise Library 6.0 (三) - Exception Handling Application Block

圖片
有時候心情好,忍不住就多寫幾篇Blog。(當然,心情比較差的時候,可能十天半個月沒辦法安安靜靜的把一些東西整理出來) 前面錄了兩段 Enterprise Library 的介紹影片,分別談了 Unity Application Block 和 Logging Application Block ,這一篇緊接著談Exception Handling Application Block。 由於時空的限制,我現在所在的位置沒法錄製影片,所以只好乖乖用寫的了。 如果可以讓我選擇,我喜歡錄影片遠超過寫文字,原因很簡單,因為我話多,blog有時候忍不住就多寫了幾百字,但這年頭大家都不看字的,害我覺得寫了很無聊。寫了沒人看不打緊,花的時間很多,年紀大了越來越懶,用講的比較快,還可以當作上課的彩排甚至教材,所以我喜歡錄影遠超過寫文章。 岔題了。 Exception Handling Application Block,顧名思義就是系統中處裡例外的模塊,大家都知道,我們會在程式碼中加上try...catch來處理例外,程式碼常常會像是這樣: try { int a = 10, b = 0; a = a / b; Console.WriteLine("done!"); Console.ReadKey(); } catch (Exception ex) { //如果發生例外...就... } 這樣的程式碼沒啥太大的問題(除了因為是範例所以一定會發生例外之外...)。 但如果像上面這樣的程式碼一多,我們就會發現,每一個try...catch裡面都是另一段不受管理的複雜的錯誤處裡邏輯,可能是寫log、可能是發mail、可能是retry...,不僅如此,一旦例外處理區塊寫死之後,例外處理區塊常常本身就是一個大累贅。 還有,發生例外的可能性和類型很多元,上面這段程式碼非常簡單,只可能得到一個 "除以零" 錯誤...