现在遇到了这样的问题Private Sub Command1_Click()
       
    On Error GoTo Cancel
    
    Err.Raise 2049, , "错!"
   
    Exit Sub
    
Cancel:    MsgBox Err.Description
    
End Sub
这个地方是会跳转的,此时表示我已截获此错误Private Sub Command1_Click()
    
    On Error GoTo Cancel    abc
    
    Exit Sub
    
Cancel:    MsgBox Err.Description
    
End Sub其中abc是在model1里面的public sub
Option ExplicitPublic Sub abc()
    
    Err.Raise 12456, , "大错!"
    
End Sub此处也能正常截获 大错 这个错误但是当我新建一个class1Option ExplicitPrivate mvarAge As Long '局部复制
Public Property Let Age(ByVal vData As Long)    mvarAge = vData
    
    If mvarAge < 0 Then
        
        Err.Raise 12345, , "特大的错"
        
    End If
    
End Property
Public Property Get Age() As Long    Age = mvarAge
End Property再调用按钮的时候
Private Sub Command1_Click()
    
    Dim x As New Class1
    
    On Error GoTo Cancel
    
    x.Age = -2
    
    Exit Sub
    
Cancel:    MsgBox Err.Description
    
End Sub此 “特大的错” 不能被截获,而是产生了一个实时错误 “特大的错” 这样我的程序当场就崩溃了
如果能截获此特大的错,应该如何处理?
如果不能,而我类里面确实需要这个异常,我应该怎么办?必须在类里面处理吗?在外部不能截获?

解决方案 »

  1.   

    你的代码没问题,生成EXE或DLL就正常了。
      

  2.   

    同意楼上的,将 class1 编译成 DLL 就OK了
      

  3.   

    编译、生成文件以后就可以了(不需要是dll)。如果你要在调试的时候也不出现实时错误的话,
    在“选项(Options)”对话框里选“通用(General)”选项卡,在“错误捕获(Error Trapping)”框里选中“遇到未处理的错误时中断(Break on Unhandled Errors)”,而不是“在类模块中中断(Break in Class Module)”。
    在代码窗口的右键菜单“切换(Toggle)”项里也可以设置。