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


Yan Pelletier
May 9th, 2001, 10:43 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 & bCrLf & 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
SubErr_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!

Spectre5000
May 9th, 2001, 10:47 AM
Not to sound mean, but check your typing. In your form_load subroutine, you state on error goto Err_Form1_Form_Load

, but you have the error labeled as SubErr_Form1_Form_Load

. Making these two the same might help.

Yan Pelletier
May 9th, 2001, 10:53 AM
It's a typo... The code compiles and runs!

Z LoveLife
May 9th, 2001, 11:42 AM
second pair of eyes strikes again LOL

sanjeewas
November 4th, 2001, 10:47 PM
I also have the same problem, have you find any answers ???
if so please answer this.

thanks

DLARLICK
November 5th, 2001, 04:42 PM
It is important to note the call stack.

What you have may seem correct... But you have to be aware that when you propogate errors, there must be a handler ready waiting for your raise of that error.

In your example you have a error occurring in your form_load event. It may seem that the calling routine would be receiving the error from the form. Put a break point on your array assigment in the form. Run the application. When the program stops on the break point. Select View; Call Stack from the visual IDE. A box will display showing you the call stack.

It will show you there is a break in your call stack between the module function and the form_load event. Something like non-basic code.

The load event does not have something to pass it's error code to. You will notice the same problem if you remove the error handler all together from the form_load event.

Sorry... Can't explain more without looking this up again... But this should give you a start.

-David