As I see, I can't explain it with my English.
There are recoverable errors as zero division. With the codeblock that I
propose we can solve this problem and the code can
continue without caching resolved exceptions.
Actually this is simply impossible because this codeblock is harcoded to catch
all errors.
LOCAL b
TRY WITH {|o| MyError( o ) }
b := 1 / 0 // THIS ERROR IS NOT CACHED, b prints 0
...
// the rest of code is executed
... // The rest of errors are cached
CATCH oErr
...
END TRY
FUNCTION MyError( e )
// by default, division by zero yields zero
IF ( e:genCode == EG_ZERODIV )
RETURN 0
ENDIF
RETURN .F.
It is only an example of use.
Ron Pinkas escribió:
> Miguel,
>
> Sorry but you are mixing 2 different issues. The TRY construct in all
> those languages will still raise the exception, if you have any error.
> The CATCH syntax simply allows you to have different catchers for
> different errors, at different levels. Those samples you posted function
> exactly like this:
>
> TRY
> ? a /0
> CATCH e
> SWITCH e:genCode
> CASE EG_ZERODIV
> ? "Caught division by 0"
> EXIT
>
> DEFAULT
> Throw( e )
> END
> FINALLY
> ? " In finally"
> END
>
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
xHarbour-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xharbour-developers