Information générale
Catégorie:
Codage, syntaxe et commandes
>I occasionally get the preseding error in my .exe. The errorhandler works most of the time, but in certain instances, I get this error instead. Clicking ignore, or cancel does nothing but get the error off the screen, and then the entire program is useless as any actionproduces the message again. I have to ctrl+alt+del to exit the program.
>the following is in my main file before the instantiation of the app object:
>ON ERROR ErrorHandler(ERROR(),PROGRAM(),LINENO())
>and the error handler is at the end of the main file:
>
>FUNCTION ErrorHandler(nError,cMethod,nLine)
>LOCAL lcErrorMsg,lcCodeLineMsg
>
>WAIT CLEAR
>lcErrorMsg=MESSAGE()+CHR(13)+CHR(13)
>lcErrorMsg=lcErrorMsg+"Method: "+cMethod
>lcCodeLineMsg=MESSAGE(1)
>IF BETWEEN(nLine,1,10000) AND NOT lcCodeLineMsg="..."
> lcErrorMsg=lcErrorMsg+CHR(13)+"Line: "+ALLTRIM(STR(nLine))
> IF NOT EMPTY(lcCodeLineMsg)
> lcErrorMsg=lcErrorMsg+CHR(13)+CHR(13)+lcCodeLineMsg
> ENDIF
>ENDIF
>IF MESSAGEBOX(lcErrorMsg,17,_screen.Caption)#1
> ON ERROR
> RETURN .F.
>ENDIF
>ENDFUNC
>
>The handler works fine until the program seems to 'lose' the location of the function. An additional hint, I get this message whenever there is an error with Foxfire! inside my program. This is not the only time however. An inescapable loop is pretty frustrating fot the user, and it is embarrasing to have to tell them to ctrl-alt-del to shut down my program. What am I doing wrong with the errorhandling?
>
>TIA
Maybe in your clean-up code from FoxFire! you could explicitly set the error handler back you yours, i.e. ON ERROR ErrorHandler(ERROR(),PROGRAM(),LINENO()). Do this AFTER FoxFire! has completed all other processing and control has been returned to your calling program.
HTH
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement