Perl6 is going to introduce a non-resumable throw/catch mechanism to replace
die/$@. (I assume that die will be synonymous with throw, for
compatibility.)

But what about warnings? I frequently find myself wanting to "catch"
warnings (e.g. to add extra context around a library's "use of undefined
value" warning; or to die when a library issues a warning). Its possible to
hack this but, as far as I am aware, there is no clean mechanism for
resumable exceptions. Could perl6 add such a capability? I don't know what
the correct syntax would be, but the pseudo code might look like:

sub foo
{
  try
  {
    $a = undef + 1 # replace this with something more interesting!
  }
  catch:warn
  {
    print "$(datestamp): $@\n";
    resume unless $::warn_count++ > 10;
    die "warning-limit exceeded";
  }
}

It doesn't have to be in the core language, but it would be nice if it was
easy to add as a module.

Dave.

Reply via email to