VB(.net)特色 -- On Error 结构 无法用Try替代??
淡蓝色2 2005-04-25 08:47:50 熟悉VB6的朋友一定很熟悉 VB的 On Error ...结构,这是在VB中唯一的异常处理方法。
现今.net平台提出了全新的Try ... Catch ... Finally结构。不可否认,Try结构让 异常处理 变得更加轻松、异常的层次更为清晰。
不过 有些地方Try结构仍然比不上原VB的On Error结构。
让VB.net用户高兴的是MS在VB.net中保留了On Error。
看下面的代码:
新建一个窗体,添加一个TextBox,名为txtBoard;再添加一个按钮,名为btnExec
在btnExec的OnClick事件写上下面的代码:
'----------------------------------------------
txtBoard.Clear()
On Error GoTo ErrHdl
Dim sngResult As Single
For I As Single = 0 To 3 Step 0.2
'手工引发一个除数为零的异常
If I = 0 Then Throw New DivideByZeroException
'计算并显示结果
sngResult = 8 / I
txtBoard.AppendText _
("8 ÷ " & I & " = " & sngResult.ToString("0.00") & Environment.NewLine)
Next
Return
ErrHdl:
'错误处理
Select Case MessageBox.Show("计算中出现错误:" & Err.Description, "错误", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error)
Case DialogResult.Retry
Resume '转到出错的那行重新执行
Case DialogResult.Ignore
Resume Next '转到出错行的下一行运行
Case Else
'什么都不做,退出
End Select
'-----------------------------------------------------
虽然On Error的性能要稍逊Try 一筹,不过在上述的结构中,可以看出On Error还是比Try更方便、结构更清晰的。
不知这样的On Error 结构能否用Try结构来实现。
欢迎讨论