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.