On 9/25/05, Yuval Kogman <[EMAIL PROTECTED]> wrote:
> I propose a new model - each exception has a continuation that
> allows it to be unfatalized.

I think we've already talked about something like this.  But in the
presence of "use fatal", it makes a lot more sense.

Something comes to mind:

    use fatal;
    sub foo()  { bar()  }
    sub bar()  { baz()  }
    sub baz()  { quux() }
    sub quux() { fail }
    {
        say foo();
        CATCH { $!.continue(42) }
    }

Exactly which exception is continued?  Where do we cut off the call
chain and replace our own value?  This comes up again with open(). 
Let's say open is implemented with a series of five nested calls, the
innermost which knows how to fail and propagate outwards.  However,
the programmer using open() has no idea of its internals, so it ought
to override the return value of open() itself, rather than its utility
functions.  However, we can't go with outermost, because then you'd
only be "fixing" the lexical call ("say foo()" above).  So it's
somewhere in between.  Where?

Luke

Reply via email to