+1 It's been up for discussion before in #perl6 (with a quick search, I find <http://irclog.perlgeek.de/perl6/2011-06-03#i_3851753> and <http://irclog.perlgeek.de/perl6/2011-05-07#i_3688404>), but so far no-one has acted on the idea. Kudos for picking it up.
// Carl On Wed, Jun 29, 2011 at 10:44 PM, Stefan O'Rear <stefa...@cox.net> wrote: > I intend to change the definition of "eval" such that it does not catch > exceptions. String eval's role as the catcher of exceptions is a legacy of > Perl 1, which had no block eval, and I feel it has no place in Perl 6. > > The exception catching and associated unwinding makes it impossible to use > resumable exceptions across eval boundaries. This includes warn. > > Given an eval that does not catch exceptions, it is very easy to add catching, > using the new blockless form of try, "try eval $code". However, given an eval > which does catch, it is impossible to synthesize one that passes exceptions > faithfully. > > Catching exceptions in an eval causes the eval frame to be different from the > calling frame, which makes tail call optimization through evals impossible. > > With the catching eval, it is very easy to write code which accidentally > discards exceptions. For the goal of safety it seems best to make discarding > exceptions hard by default. > > Does anyone have objections? Is there general consensus that this change > should be made? > > -Stefan > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > > iEYEARECAAYFAk4LjqQACgkQFBz7OZ2P+dIKVQCfXaqXIo7JWJOpUNB1jtIOhGS/ > sgMAoLu2HjlHMZth8U/7el4XKymLX6Qu > =1ywK > -----END PGP SIGNATURE----- > >