《WF编程》系列之30 - 基本活动:错误处理
《WF編程》系列之30 - 基本活動(dòng):錯(cuò)誤處理
4.3 錯(cuò)誤處理
Fault,故障,現(xiàn)在官方已經(jīng)將其翻譯為錯(cuò)誤,那么以后的隨筆中我也就采用官方的翻譯吧.
錯(cuò)誤處理也屬于流程控制的一部分,這一節(jié)我來(lái)介紹一下有關(guān)錯(cuò)誤處理的活動(dòng).錯(cuò)誤是指在工作流執(zhí)行期間發(fā)生的異常.我們可以使用錯(cuò)誤處理程序來(lái)捕捉這些異常并嘗試做一些”修復(fù)”工作.我們可以補(bǔ)償提交的事務(wù),或者發(fā)送Email來(lái)警告管理員并等待丟失的數(shù)據(jù)被修復(fù).
我們最好在工作流中對(duì)可能發(fā)生的錯(cuò)誤進(jìn)行處理,如果工作流拋出了一個(gè)異常,而我們又不知道如何去處理,那么只能等Runtime終止工作流.
4.3.1 FaultHandlersActivity
FaultHandlersActivity并不是列在工具箱中等我們使用的活動(dòng).在工作流的錯(cuò)誤處理程序視圖(fault handlers view)中,默認(rèn)只有一個(gè)空白的復(fù)合活動(dòng),這就是FaultHandlersActivity.而且不只是工作流, 許多復(fù)合活動(dòng)(如While,Listen,Sequence和TransactionScope…)都可以通過(guò)錯(cuò)誤處理程序視圖來(lái)可以處理子活動(dòng)中的錯(cuò)誤.
在工作流或活動(dòng)的右鍵菜單中選擇查看錯(cuò)誤(View Faults),或者點(diǎn)擊設(shè)計(jì)器底部的第三個(gè)按鈕就可以轉(zhuǎn)到錯(cuò)誤處理程序視圖.我們可以在這個(gè)視圖中使用FaultHandler活動(dòng).
4.3.2 FaultHandlerActivity
FaultHandler活動(dòng)很好理解,因?yàn)樗虲#和VB中的catch語(yǔ)句非常相像. FaultHandler可以捕捉異常并執(zhí)行一些操作.在錯(cuò)誤處理程序視圖中,我們可以從工具箱里拖放多個(gè)FaultHandler活動(dòng)到設(shè)計(jì)器圖板中,每個(gè)FaultHandler都可以包含自己的子活動(dòng).我們可以添加多個(gè)FaultHandler來(lái)處理不同類(lèi)型的錯(cuò)誤(類(lèi)似catch語(yǔ)句).
FaultHandler活動(dòng)有一個(gè)FaultType屬性,用來(lái)表示需要捕捉的異常類(lèi)型.如果將FaultHandler設(shè)置為System.Exception,我們就可以捕捉所有的CLS-compliant異常.處理程序會(huì)捕捉所有FaultType類(lèi)型的異常,或所有繼承自FaultType的異常.而FaultHandler活動(dòng)的另外一個(gè)屬性-Fault屬性則可以將異常綁定到工作流的域或者屬性中.?
| Runtime會(huì)從左到右依序查找FaultHandler,如果第一個(gè)FaultHandler的FaultType是System.Exception,則此FaultHandler就會(huì)捕捉所有的異常,這樣做的結(jié)果就是Runtime不再需要其它的FaultHandler了(也類(lèi)似catch語(yǔ)句). |
| 相關(guān)文章:《WF編程》系列之21 - 故障 Faults |
轉(zhuǎn)載于:https://www.cnblogs.com/andylaufzf/archive/2008/08/27/1277557.html
總結(jié)
以上是生活随笔為你收集整理的《WF编程》系列之30 - 基本活动:错误处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一文带你了解 HTTP 黑科技
- 下一篇: MAC地址前三位是厂家标识符(Organ