.NET中的错误处理
与VB相比,VB.NET在错误处理上也有了很大的改进,下面来谈一谈异常处理和及其用
于捕捉错误的有效的编程方法。
On Error语句
VB.NET仍然包含了VB中的On Error语句,当考虑全局错误处理的时候,可以采用这种
方法。下面是实例
On Error GoTo errorhandler
Dim intx As Integer
Dim intz As Integer
Dim inty As Integer
inty = 0
intx = 5
intz = CType(intx / inty, Integer)
Exit Sub
errorhandler:
MessageBox.Show(Err.Description)
在学习VB的时候,经常用到这种处理错误机制,接下来谈一下VB.NET新引出的异常处
理机制
Try...Catch...Finally
Try语句块:放在代码块前面
Catch语句块:用来指定应查找什么类型的错误,捕捉错误类型
Finally代码块:必须执行,包含清理异常情况的例程
Demo
Dim intx As Integer
Dim inty As Integer
Dim intz As Integer
inty = 0
intz = 5
Try
intz = CType((intx / inty), Integer)
Catch objA As System.OverflowException
MessageBox.Show("catch the divide by zero error")
If inty = 0 Then
‘可以强制退出Try语句
Exit Try
Else
MessageBox.Show("error not divide by 0")
End If
Catch
MessageBox.Show("catch any other errors")
Finally
MessageBox.Show(Str(intz))
End Try
在此Demo中运用两个Catch,第一个捕获指定的错误,另外一个可以捕获到其他类型
的错误。
我们在捕捉错误的时候,用到的是Exception类,下面就略谈一下,有关此类的方法
和属性。先看下面图片
以上就是有关Exception类的属性和方法,下面找几个小例子来示范一下。
Source和StackTrace属性
Source:一个包含产生错误的对象名称的字符串
StackTrace:以文本字符串的形式保存堆跟踪
Demo
Dim intx As Integer
Dim inty As Integer
Dim intz As Integer
inty = 0
intx = 5
Try
intz = CType((intx / inty), Integer)
Catch objA As System.OverflowException
‘导致错误发生的事件名称
objA.Source = "Button3_Click"
‘显示错误发生的详细信息
MessageBox.Show("错误发生在" & _
objA.Source & objA.StackTrace)
Finally
MessageBox.Show(Str(intz))
End Try
GetType和ToString方法
可以返回更有价值的信息,以及这些信息是怎样和何时产生的。
GetType:返回已发生的错误类型的附加信息
ToString:返回与错误有关的相关信息
Demo
Dim intx As Integer
Dim intz As Integer
Dim inty As Integer
inty = 0
intx = 5
Try
intz = CType((intx / inty), Integer)
Catch objA As System.OverflowException
‘返回错误的标识
MessageBox.Show(objA.GetType.FullName)
MessageBox.Show(objA.GetType.BaseType.FullName)
‘返回错误发生的位置
MessageBox.Show(objA.ToString)
Finally
MessageBox.Show(Str(intz))
End Try
以上就是我们在做异常处理时,经常用到的方法。如果放任错误的话,那么软件使用
起来就会使用后很迷茫,所以对于软件要做好错误预处理相关机制。