sub interface_sub { try { internal_sub1($arg1, $arg2); } catch Error with { my $E = shift; throw Error::Simple($E); }; try { internal_sub2($arg1, $arg2, $arg3); } catch Error with { my $E = shift; throw Error::Simple($E); }; }