From: "Peter Scott" <[EMAIL PROTECTED]>
Sent: Sunday, August 13, 2000 10:35 PM
> try {
>    # fragile code which doesn't call any subroutines that might die
>    # and doesn't include any other try blocks
> } catch {
>    # No code at all
> }
Well, I don't really like that solution.  It's exactly the same situation as
use strict / use warnings, BTW.  I don't much like that either, but...  In
any case, there we have exactly the situation we're speaking about (well, in
warnings, anyway) -- a heirichy of exceptions.

Therefore, I think we want some generic mechinisim to say what the behavor
of an uncaught exception is.

My proposal is:
$Exception::<whatever>::onuncaught = CODEREF.

Yes, this is a global.  It has to be; the definition of when/how this gets
called is that if the unwind stack goes all the way /past/ the root of the
code, this code ref gets called.  The only parameter is the exception.  The
defalut would be sub {die shift;} (for "obviously" fatal things), which
would make the program exit with a fatal exception.  Other normal choices
would be undef, ignore it (non-defualt warnings, like bareword), and sub
{warn shift;}, print out a warning message (default warnings, like... I
can't think of any).

The value of onuncaught should follow isa if it doesn't exist.

    -=- James Mastros

Reply via email to