try { eval { die "foobar"; }; if ($@) { throw Error::Bad($@); } } catch Error::Bad with { my $err = shift; print "Failed: $err\n"; exit; } print "ok";