いつも忘れてサンプルを作ってしまうので備忘録。
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なのね。