VB.NET異常處理突破局限性
因為VB.NET的出現,在一定程度上改變了開發人員的編程習慣。比如在錯誤的處理方面。VB.NET異常處理的方式徹底改變了VB6中的錯誤處理方式,這點我最喜歡,哈! 項目中的異常分為兩種,業務異常和系統異常:
1、業務Exception:
從ApplicationException中繼承,有一個總的Exception,然后各個模塊的Exception都是從總的Exception中繼承,從而形成了一個層次結構:
- ApplicationException
- ProjectException
- Module1Exception
- Module1Concret1Exception
- Module2Concret2Exception
- ……………
- Module2Exception
- ……………
2、系統異常,報出的錯誤,包括數據庫報出的:
VB.NET異常處理捕捉的原則是只捕捉需要的錯誤,因材在數據訪問層和業務層不需要Catch所有的錯誤,如下:
- Public Function Methoda()
- IF …… THEN
- If ContextUtil。IsInTran
saction Then- ContextUtil.etAbort()
- End If
- Throw Module1Concret1
Exception- End If
- ……
Catch 需要的具體的錯誤Module2Concret1Exception
- '這里不需要 Catch
ProjectException- End Function
為了便于調試,需要把系統異常記錄在日志文件中,這里用的MS提供的Exception Management Application Block 來實現的,具體的實現方式見MSDN,下載地址是:
http:www.icrosoft.om/downloads/details.spx?FamilyId=8CA8EB6E-6F4A-43DF-ADEB-8F22CA173E02&displaylang=en
在界面顯示錯誤信息的時候為兩種顯示方式,一種是用來顯示業務異常的,一種界面是用來顯示系統異常的,VB.NET異常處理代碼如下:
- Public Sub Button_OnClick()
- Dim objblModule As 業務層
- Try
- ObjblModul.osomething()
- Catch ProjectExcption
- '顯示一個定制的頁面()
- Catch Exception
- 'call Exception Management.
Publish method to log
the exception- '顯示另一個定制的頁面,定制的頁面
有將具體的錯誤信息發送到administrator
的功能,就象windows的錯誤頁面- End Try
- End Sub
【編輯推薦】