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