# this is a very crude concept example my $val = try { some_operation(); } catch { if ( blessed($_) ) { &{$exceptions_by_class{blessed($_)}}($_); } else { # handle normal die or croak message ... } };