Jenda writes:
> Well ... what about just ... making the eval{} block smaller?
> 
>     eval {
>        # Code where an error may occur
>        exception_causing_method();
>     };
>     if ($@) { ... }
>     # Code where I want to resume after handling the exception
>     print "Continuing....\n";

Let's assume I'm trying to write a generalized resumptive error
handler.  I don't have control over what the eval block (or
equivalent) will be, nor do I know how to modify its contents.

> Another thing ... what EXACTLY do you mean by "resume with 
> next statement". Say your eval{} block called function Foo(), which 
> called Bar(). And somewhere in the middle of Bar() occured an 
> exception.Do you want to continue with Bar(). Go back into Foo() 
> just below he call to Bar()? Go to the line of the eval{} block below 
> the call to Foo() ?
> I guess the last one, but ...

The first:  continue with the next line after where the exception was
triggered, such that all state in any current functions is the same.

> Anyway to tell the truth you could do this :
> 
>       eval {
>               print "Ahoj\n";
>               $y = 0;
>               $x = 1/$y;
>       LEJBL: print "Cau\n";
>       };
>       if ($@) {
>               print "ERROR: $@\n";
>               goto LEJBL;
>       }

That's closer, but is it possible without inserting a label or using
a goto?  Assume the code that might trigger the error (the eval block
or equivalent) is given to me.

> P.S.: You come from VB? "On Error Resume Next", "On Error 
> Goto errHandler" and "Resume Next" ... I've never got used to that 
> crazy way of doing things.

No, I've never used VB.  I'm just looking into doing resumptions in
Perl....

+ Richard

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to