misc.log

日常茶飯事とお仕事と

VB6のエラー処理から呼んだ処理でエラー

いつも忘れてサンプルを作ってしまうので備忘録。
VB6.0で、エラートラップ処理の中から呼んだ関数内のエラートラップ、どうなるんだっけ?と思って試行。

'エラーを起こして、エラー処理からさらにエラーが出る処理を呼ぶ
Private Sub Command1_Click()

    On Error GoTo ErrorRoutine
    
    MsgBox (20 / 0)
    MsgBox "通過!←ありえない"

Exit Sub
ErrorRoutine:

    If Not Test Then
        MsgBox "いける"
    Else
        MsgBox "だめ?←多分だめならここにこない"
    End If

End Sub

'エラー無しならTrue、エラー発生ならFalse
Private Function Test() As Boolean

    On Error GoTo ErrorRoutine
    Test = True
    MsgBox CStr(10 / 0)

Exit Function
ErrorRoutine:

    Test = False

End Function

結果は、きちんとTest関数からFalseが返ってきた。On Errorでとんだ先の中で直接エラーが出る処理を行うと、そこでのエラーはもう拾えないが、そこから別の関数に飛べばOKなのね。