因为VB.NET的出现,在一定程度上改变了开发人员的编程习惯。比如在错误的处理方面。VB.NET异常处理的方式彻底改变了VB6中的错误处理方式,这点我最喜欢,哈! 项目中的异常分为两种,业务异常和系统异常:
1、业务Exception:
从ApplicationException中继承,有一个总的Exception,然后各个模块的Exception都是从总的Exception中继承,从而形成了一个层次结构:
ApplicationException
ProjectException
Module1Exception
Module1Concret1Exception
Module2Concret2Exception
……………
Module2Exception
……………
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
2、系统异常,报出的错误,包括数据库报出的:
VB.NET异常处理捕捉的原则是只捕捉需要的错误,因材在数据访问层和业务层不需要Catch所有的错误,如下:
Public Function Methoda()
IF …… THEN
If ContextUtil。IsInTran
saction Then
ContextUtil.etAbort()
End If
Throw Module1Concret1
Exception
End If
……
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
Catch 需要的具体的错误Module2Concret1Exception
'这里不需要 Catch
ProjectException
End Function
- 1.
- 2.
- 3.
为了便于调试,需要把系统异常记录在日志文件中,这里用的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
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
【编辑推荐】