eval { step1(); step2(); }; if (my $error = $@) { # rethrow error if we can't handle it die $error unless ref $error && $error->isa('My:Error'); handle_error($error); }