读书人

请问防错代码该怎么写

发布时间: 2012-01-20 18:53:53 作者: rapoo

请教防错代码该如何写
小弟写在学写VB,不过发现有时如果遇到VB程序出错,会自动报警退出来显示SYSTEM ERROR TIME,看了点资料说在每个SUB前面写代码 ON ERROR RESUME NEXT就可以不出现这种情况,系统仍然执行。还有一个是ON ERROR GOTO 这个又该怎么用。一般来说我们写VB该怎样加入防错代码,最好是给这两个例子介绍一下。谢谢高手指教。

[解决办法]
ON ERROR GOTO是出现错误跳转到某个语句上
比如打开文件,执行操作,然后关闭文件,就可以写一个ON ERROR GOTO,跳转到关闭文件代码上,这样无论文件操作出现什么错误都可以确保文件被关闭。
[解决办法]
ON ERROR RESUME NEXT 是跳过错误,继续执行
on error goto XXX 是出错时转向错误处理模块:示例
Public Sub OnErrorDemo()
On Error GoTo ErrorHandler ' Enable error-handling routine.
Dim x As Integer = 32
Dim y As Integer = 0
Dim z As Integer
z = x / y ' Creates a divide by zero error
On Error GoTo 0 ' Turn off error trapping.
On Error Resume Next ' Defer error trapping.
z = x / y ' Creates a divide by zero error again
If Err.Number = 6 Then
' Tell user what happened. Then clear the Err object.
Dim Msg As String
Msg = "There was an error attempting to divide by zero! "
MsgBox(Msg, , "Divide by zero error ")
Err.Clear() ' Clear Err object fields.
End If
Exit Sub ' Exit to avoid handler.
ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 6 ' Divide by zero error
MsgBox( "You attempted to divide by zero! ")
' Insert code to handle this error
Case Else
' Insert code to handle other situations here...
End Select
Resume Next ' Resume execution at same line
' that caused the error.
End Sub

还有一个Raise是将错误升起
[解决办法]
On Error GoTo 语句   On Error GoTo 语句启用异常处理的某个例程,并指定该例程在此过程中的位置。它使用标签或行号,指出特定异常处理例程在代码中的位置。使用 -1 时,在过程内部禁用错误处理。使用 0 时,禁用当前异常。如果没有 On Error 语句,并且在当前调用堆栈中所有方法均未处理异常,则发生任何运行时错误都将是致命的:执行过程停止并显示错误消息。   
下表列出了 On Error GoTo 语句可能使用的方法。 语句 任务 On Error Goto -1 将 Err 对象重置为 Nothing,从而在例程中禁用错误处理 On Error Goto 0 将最后的异常处理程序位置重置为 Nothing,从而禁用异常 On Error Goto <标签名> 将指定标签设置为异常处理程序的位置 On Error Resume Next 创建 Resume Next 行为,作为最近的异常处理程序的位置   Resume 和 Resume Next   Resume 语句本身可以将控制权返回导致异常的语句。执行过程将返回到最初产生异常的那一行。   相比较而言,Resume Next 语句将在发生异常后恢复执行过程。该语句指定,在异常事件中,控制权将传递给紧接发生异常语句之后的语句。Resume Next 的使用可允许出现不太严重的失败。引发错误的语句失败,但应用程序将继续执行,且允许用户改正错误并继续进行操作。与此类似,Resume <标签> 将控制权传递给在其 line 参数中指定的标签。确保行标签与调用它的代码位于相同的过程中,因为它不能跨函数使用。

读书人网 >VB

热点推荐