Calebotomy

Perl Core Syntax Wishlist: an Exception Stack

I have come to wish many things were part of Perl syntax that are not, and no using external modules is not enough for me. I think it’s time Perl got the features as part of the language itself (and yes I suppose I could settle for feature.pm, and no I’m probably not going to write them myself, I’m not smart enough yet). The first of these is a proper exception stack. I want to be able to write:

use 5.018;
use warnings;

sub foo {
    throw Exception->new( 'message' );
}

try {
    foo();
}
catch ( 'Exception' ) {
     say "$_"; # object stringifies
}
catch ( 'Exception::Other' ) {
     say $_->message #also has an accessor
}
finally {
     ...
}

I think we need throw, try, catch, and finally keywords. And no I don’t think it makes sense to have Object->throw. In fact I think this Original Perl 6 Syntax Proposal reads like just what we need in Perl 5. Unfortunately I think this is what we are getting in Perl 6, which IMO is not as nice.


Share

comments powered by Disqus