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 )