VB程序员博客

VB程序开发

调用一个类模块的函数时,如果这个函数用Err.Raise抛出异常,但上层的函数捕捉不到这个异常,会直接把程序搞死.

比如这种:

Private Sub Form_Load()
    Set c = New Class1   
On Error GoTo errH
    c.fc
    Exit Sub
errH:
    MsgBox "Err handle in Form_Load OK"
End Sub

'其中fc()里面抛出一个异常:
Public Sub fc()
    Err.Raise 53   
End Sub

但就好像On error goto errH 没起作用一样
该怎么解决啊?

请确认抛错误的函数 fc 在 Class1 中

Public Sub fc()
    Err.Raise 53   
End Sub
上面这段代码如果在Class1中
那么你的处理就完全没问题
当fc的Err.Raise起作用时,会在客户端得到更新的Err对象
那么就会GOTo errH

除非你把Fc()函数写在客户端了,那就没办法了,这样你的c.Fc()根本就执行不通了

BS1楼

1楼不是做广告?是在做俯卧撑?

抛出是这样抛出的吗?

直接抛出一个事件吧。
比如Error事件。

引用 3 楼 datou985 的回复:
Public Sub fc()
    Err.Raise 53   
End Sub
上面这段代码如果在Class1中
那么你的处理就完全没问题
当fc的Err.Raise起作用时,会在客户端得到更新的Err对象
那么就会GOTo errH

除非你把Fc()函数写在客户端了,那就没办法了,这样你的c.Fc()根本就执行不通了

另外还得看你fc()里面抛的这个异常是正常提示还是真正的VB运行时错误
若为正常提示可以这样Err.Raise,
若是运行时错误,则得Err.Raise Err.Number,Err.Description等等,这样来抛


标签: , , ,