NAME
Exception::Delayed - Execute code and throw exceptions later
VERSION
version 0.001
SYNOPSIS
my $x = Exception::Delayed->wantscalar(sub {
...
die "meh";
...
}); # code is immediately executed
my $y = $x->result; # dies with "meh"
DESCRIPTION
This module is useful whenever an exception should be thrown at a later moment, without using Try::Tiny or similiar.
Since the context cannot be guessed, this module provides two entry-points: "wantscalar" and "wantlist".
METHODS
wantscalar
my $x = Exception::Delayed->wantscalar($coderef, @arguments);
# same as:
my $x = scalar $coderef->(@arguments);
Execute code in a scalar context. If an exception is thrown, it will be catched and stored, but not thrown (yet).
wantlist
my @x = Exception::Delayed->wantscalar($coderef, @arguments);
# same as:
my @x = $coderef->(@arguments);
Execute code in a list context. If an exception is thrown, it will be catched and stored, but not thrown (yet).
result
Return the result of the executed code. Or dies, if there was any exception.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/zurborg/libexception-delayed-perl/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
David Zurborg <zurborg@cpan.org>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2015 by David Zurborg.
This is free software, licensed under:
The ISC License