!!! CATCH_EXCEPTIONS revamp.
authorRocco Caputo <rcaputo@cpan.org>
Thu, 5 Sep 2013 22:52:13 +0000 (18:52 -0400)
committerRocco Caputo <rcaputo@cpan.org>
Thu, 5 Sep 2013 22:52:13 +0000 (18:52 -0400)
commit52487325a316b2bcc945f0a1f344556b58760ef3
tree65ebd53df40d9a8b59df71fdc4c33c3535c186c4
parentbae8c6e8dd4184ec0ad5dec9d41da4229a5831c5
!!! CATCH_EXCEPTIONS revamp.

May be slightly backwards incompatible.  I expect more good to come
from it than harm.

POE should hide error messages less often.  Its usage of eval() and
propagation of exceptions have been simplified somewhat.

!!! This change reverses POE's stance on user-defined $SIG{__DIE__}
handlers.  Now they are honored inside event handlers.  Code that does
this is expected to know what it's doing.  Perl's global special
variables, including %SIG, have spooky action at a distance.

Modifying $SIG{__DIE__} locally shouldn't cause any problems.  The
original value will be restored at the end of the local scope.

I changed this because reasons:

1. Silent side effects suck.  Previously, POE would silently overrule
global changes to $SIG{__DIE__}.  This change makes things a little
more comprehensible.

2. $SIG{__DIE__} handlers are very useful for logging and debugging.
Setting them should be permissible.

3. If CATCH_EXCEPTIONS is on, and $SIG{__DIE__} is redefined in an
event handler, the programmer is told about the potential side
effects.  This is an experimental warning and is subject to change
more than most things.

4. Error messages were being hidden at work, and it was confounding
development.
lib/POE/Kernel.pm
t/90_regression/leolo-sig-die.t