Page 1 of 1

error handler acting odd

PostPosted: Mon Jul 20, 2020 10:00 pm
by don lowenstein
My error handler seems to be odd.
this just recently began.
It's not staying set on my default handler.

Is there a way to view the current error handler's target function it is currently set to?

Windows 10
MS-Visual C++ version 19
Harbour 3.2.0
FWH1095

the only thing different in my environment is a recent Windows Update.

Re: error handler acting odd

PostPosted: Tue Jul 21, 2020 3:51 am
by Antonio Linares
Don,

Harbour uses function ErrorBlock( bNewErrorBlock ) --> bPreviousErrorBlock to set/retrieve the errorblock.
As it uses a codeBlock as the param there is no way to retrieve the used function from the codeBlock.

Anyhow, you can use the function __vmItemId( codeBlock ) to check the codeblock unique ID:
Code: Select all  Expand view
function Main()

   local bErrorBlock := { || nil }
   
   ? __vmItemId( bErrorBlock )
   
   ? __vmItemId( ErrorBlock() )  // this one is different from bErrorBlock
   
return nil

Re: error handler acting odd

PostPosted: Tue Jul 21, 2020 4:13 am
by Antonio Linares
A simpler way is to compare the codeBlocks:

Code: Select all  Expand view
function Main()

   local bErrorBlock := { || nil }
   
   ? bErrorBlock == ErrorBlock()
   
return nil

Re: error handler acting odd

PostPosted: Tue Jul 21, 2020 4:41 pm
by don lowenstein
I found my problem thanks to your help, Antonio.

I trust all is well with you and wishing you the best.

Thank you.
Don