Error-Tiny
view release on metacpan or search on metacpan
lib/Error/Tiny.pm view on Meta::CPAN
require Carp;
$Carp::Internal{+__PACKAGE__}++;
require Scalar::Util;
use Error::Tiny::Exception;
use Error::Tiny::Catch;
use Error::Tiny::Then;
sub try(&;@) {
my ($try, @handlers) = @_;
my $wantarray = wantarray;
my @ret;
eval { @ret = $wantarray ? $try->() : scalar $try->(); 1 } || do {
my $e = $@;
my $orig_e = $e;
if (!Scalar::Util::blessed($e)) {
lib/Error/Tiny.pm view on Meta::CPAN
}
}
}
Carp::croak($orig_e);
};
return $wantarray ? @ret : $ret[0];
}
sub catch(&;@) {
my ($class, $handler) =
@_ == 2 ? ($_[0], $_[1]->handler) : ('Error::Tiny::Exception', $_[0]);
Error::Tiny::Catch->new(handler => $handler, class => $class);
}
sub then(&;@) {
my ($handler, $subhandler) = @_;
(Error::Tiny::Then->new(handler => $handler), $subhandler);
}
1;
__END__
=head1 NAME
( run in 0.723 second using v1.01-cache-2.11-cpan-49f99fa48dc )