Click to See Complete Forum and Search --> : Error handling problem


Yan Pelletier
May 9th, 2001, 10:25 AM
I have a serious problem with th error handling prcess. For a reason I can't understand, if you raise an error in a Form, this error don't go down on the calling procedure. This exemple will help you understand what I mean :



MODULE1.MOD

option Explicit

Sub Main()

on error GoTo Err_Module1_Main

from1.Show

Exit Sub

Err_Module1_Main:

MsgBox Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description

End Sub


FORM1.FRM

option Explicit

private Sub Form_Load()
Dim intVar(2) as Integer
on error GoTo Err_Form1_Form_Load

intVar(-1) = 3

Exit Sub

Err_Form1_Form_Load:

Err.Raise Err.Number, Err.Source, Err.Description

End Sub





As you can see, the entry point of my program is Sub Main(). In this procedure, I'm loading a Form called Form1. There is an intentionnal "Subscript out of range" error in the Form_Load of Form1. The "On Error" statement being in the codem the error is traped, and we end up in the "Err_Form1_Form_Load:" section. In this section, I do an "Err.Raise" which should be sent to the "Sub Main()" of MODULE1.MOD, but it dosen't.

As far as I know, when raise errors in VB this error should go down on the calling procedure... Why isn't it doing so?

Please help me!

Cakkie
May 9th, 2001, 10:49 AM
Well, you have a problem here. If you call a sub or function which raises an error (or just causes an error) the errorhandler is used. In you case, the errorhandler of the form_load. This errorhandler raises an error, resulting in the same errorhandler being raised again. Here's your first problem.

The second problem is bigger. The error happens in the form_load event. This method is not called by the form.show method, but it just happens, it's an event, and the caller of an event is the system.

Tom Cannaerts
slisse@planetinternet.be

Programming today is a race between software engineers striving to build bigger and better idot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning -- Rich Cook