我在VB6中建立一个简单的command,如下
Private Sub Command1_Click()
On Error GoTo ErrorHandler
ErrorHandler:
    MsgBox Err.Number & vbNewLine & Err.Description
End Sub
当运行command时,MsgBox就会跳出来,显示Err.Number=0(0代表没有错误)。这段代码没有任何东西,怎么会访问ErrorHandler行?

解决方案 »

  1.   

    Private Sub Command1_Click()
    On Error GoTo ErrorHandler
    '事件代碼
    exit sub
    ErrorHandler:
        MsgBox Err.Number & vbNewLine & Err.Description
    End Sub
      

  2.   

    他不是错误而跳到那里。而是顺序执行到那里的。因为你没有在errorhandler之前exit sub。一般,我这样弄:
    function abc
       dim XXX
       dim ...
       on error goto errtrap
       ......
       .....
       abc=
       exit function
    errtrap:
       abc=...
       ...
    end function如果是sub就去掉上面的2句abc=....
      

  3.   

    UP
    你在 ErrorHandler: 前应该加一句 exit sub/funtion等跳出
    要不程序会按顺序执行,没跳出当然会执行你的错误处理了
      

  4.   

    Exit Sub
    否则会一直执行下去的
    当然出现ErrNumber=0即没有错误
      

  5.   

    On Error GoTo ErrorHandlerexit  *****ErrorHandler:
        记录函数 Err.Number & vbNewLine & Err.Description
    '日后查看 用 
    Err.Clear
    '清除错误
    resume next 
    '在哪错的还能跳回去
    End Sub
      

  6.   

    哦,I See,原来有这个一个技巧。
    Summer006(在CSDN打肿脸充胖子)和hot1kang1(许仙) 讲的清楚,但我要谢谢每一位回贴的热心朋友。
      

  7.   

    可以写成这样!
    Private Sub Command1_Click()
    On Error GoTo ErrorHandler     你的代码ErrorHandler:
        if err.number<>0 then
             MsgBox Err.Number & vbNewLine & Err.Description
        end if
    End Sub这样如果没有错误就不会调用msgbox.
    而且你还可以把一些公用的代码放在end sub之前.
    做一些销毁对象之类的操作
      

  8.   

    Private Sub Command1_Click()
    On Error GoTo ErrorHandler    MsgBox "asdfsadf"
        If False Then
    ErrorHandler:
            MsgBox Err.Number & vbNewLine & Err.Description
        End IfEnd Sub
      

  9.   

    Private Sub Command1_Click()
    On Error GoTo ErrorHandler    exit subErrorHandler:
        MsgBox Err.Number & vbNewLine & Err.Description
    End Sub