autodie
view release on metacpan or search on metacpan
lib/autodie/exception.pm view on Meta::CPAN
my $sub = $E->function;
The subroutine (including package) that threw the exception.
=cut
sub function { return $_[0]->{$PACKAGE}{function}; }
=head3 file
my $file = $E->file;
The file in which the error occurred (eg, C<myscript.pl> or
C<MyTest.pm>).
=cut
sub file { return $_[0]->{$PACKAGE}{file}; }
=head3 package
my $package = $E->package;
The package from which the exceptional subroutine was called.
=cut
sub package { return $_[0]->{$PACKAGE}{package}; }
=head3 caller
my $caller = $E->caller;
The subroutine that I<called> the exceptional code.
=cut
sub caller { return $_[0]->{$PACKAGE}{caller}; }
=head3 line
my $line = $E->line;
The line in C<< $E->file >> where the exceptional code was called.
=cut
sub line { return $_[0]->{$PACKAGE}{line}; }
=head3 context
my $context = $E->context;
The context in which the subroutine was called by autodie; usually
the same as the context in which you called the autodying subroutine.
This can be 'list', 'scalar', or undefined (unknown). It will never
be 'void', as C<autodie> always captures the return value in one way
or another.
For some core functions that always return a scalar value regardless
of their context (eg, C<chown>), this may be 'scalar', even if you
used a list context.
=cut
# TODO: The comments above say this can be undefined. Is that actually
# the case? (With 'system', perhaps?)
sub context { return $_[0]->{$PACKAGE}{context} }
=head3 return
my $return_value = $E->return;
The value(s) returned by the failed subroutine. When the subroutine
was called in a list context, this will always be a reference to an
array containing the results. When the subroutine was called in
a scalar context, this will be the actual scalar returned.
=cut
sub return { return $_[0]->{$PACKAGE}{return} }
=head3 errno
my $errno = $E->errno;
The value of C<$!> at the time when the exception occurred.
B<NOTE>: This method will leave the main C<autodie::exception> class
and become part of a role in the future. You should only call
C<errno> for exceptions where C<$!> would reasonably have been
set on failure.
=cut
# TODO: Make errno part of a role. It doesn't make sense for
# everything.
sub errno { return $_[0]->{$PACKAGE}{errno}; }
=head3 eval_error
my $old_eval_error = $E->eval_error;
The contents of C<$@> immediately after autodie triggered an
exception. This may be useful when dealing with modules such
as L<Text::Balanced> that set (but do not throw) C<$@> on error.
=cut
sub eval_error { return $_[0]->{$PACKAGE}{eval_error}; }
=head3 matches
if ( $e->matches('open') ) { ... }
if ( 'open' ~~ $e ) { ... }
C<matches> is used to determine whether a
given exception matches a particular role.
( run in 1.110 second using v1.01-cache-2.11-cpan-5511b514fd6 )