Maurilio, Miguel,

Of course I understand, but that is against the very nature of the  
TRY construct, and thus has no equivalent in any language I'm  
familiar with.

One can easily achieve such objective using the ErrorBlock() function  
inside the TRY code. I personally strongly object modifying TRY syntax.

Ron

On Jun 26, 2008, at 7:44 AM, Maurilio Longo wrote:

> Ron,
>
> I think Miguel is trying to say that without the new syntax a  
> division by zero
> interrupts the execution of the code inside try-catch and gives  
> control to the
> code following the catch clause.
>
> While with the new syntax it is able to return a value for the  
> division by
> zero operation and continue as if there was no error at all.
>
> Maurilio.
>
>
> Miguel Angel Marchuet wrote:
>> 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
>>>
>>
>>
>
> -- 
>  __________
> |  |  | |__| Maurilio Longo
> |_|_|_|____| farmaconsult s.r.l.
>
> 
>
> ---------------------------------------------------------------------- 
> ---
> 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
>



-------------------------------------------------------------------------
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

Reply via email to