>>>>> "PRL" == Perl6 RFC Librarian <[EMAIL PROTECTED]> writes:
PRL> RFC 80 proposes standard exception classes and methods for core exceptions.
PRL> This RFC doesn't need to repeat those, but it can expound upon the
PRL> semantics that exception classes ought to have. Assume wlog that they
PRL> all inherit from a base class, C<Exception>. Some people think that
PRL> exceptions should not be rethrown implicitly. We can provide a boolean flag
PRL> in the class or even the exception object itself to be checked for this:
PRL> sub Exception::IO::implicit_rethrow { 0 } # One class
PRL> sub Exception::implicit_rethrow { 0 } # All classes
PRL> throw Exception::Socket(implicit_rethrow => 0); # Just this exception
PRL> [Note: it had been proposed that this functionality would be provided by a
PRL> method C<uncaught_handler> which would be called if an exception wasn't
PRL> caught.
PRL> But if that routine decided to rethrow the exception, the C<continue> block
PRL> would not get called at the right time.]
Please include the comments about global variables and action at a distance.
PRL> =head2 Exception classes - ignoring
PRL> Note that we could also make it possible to selectively or globally ignore
PRL> exceptions, so that perl continues executing the line after the C<throw>
PRL> statement. Just import a C<ignore> function that takes a class name:
PRL> ignore Exception::IO; # Ignore all I/O exceptions
PRL> ignore Exception; # Ignore all exceptions
PRL> and when perl sees the C<throw>, it just does nothing. (Or do it by
PRL> overriding a base class method as for C<implicit_rethrow> if you don't want
PRL> to put another function in the namespace.) Since C<throw> and C<die>
PRL> should be essentially identical, this would allow any kind of exception to
PRL> be ignored, not just the ones that were C<throw>n. This is not necessarily
PRL> a good thing, of course.
Oh, no! Are you really suggesting that after
open (FOO, "nonesuch") or throw "file not found"
The next statement continues??????
How in $DIETY's name do you expect to protect code?
PRL> =head2 $SIG{__DIE__}
PRL> <$SIG{__DIE__}> needs to be triggered only as a I<last> resort
PRL> instead of firing immediately, since it messes with the mind of this and
PRL> every other decent exception handling mechanism. Perhaps it should be axed
PRL> altogether. Please.
$SIG{DIE} should die. Action at a distance. Global. Can't know what
other threads or modules want done here.
<chaim>
--
Chaim Frenkel Nonlinear Knowledge, Inc.
[EMAIL PROTECTED] +1-718-236-0183