Provided by: libmojolicious-perl_7.59+dfsg-1ubuntu1_all
NAME
Mojo::Exception - Exceptions with context
SYNOPSIS
use Mojo::Exception; # Throw exception and show stack trace eval { Mojo::Exception->throw('Something went wrong!') }; say "$_->[1]:$_->[2]" for @{$@->frames}; # Customize exception eval { my $e = Mojo::Exception->new('Died at test.pl line 3.'); die $e->trace(2)->inspect->verbose(1); }; say $@;
DESCRIPTION
Mojo::Exception is a container for exceptions with context information.
ATTRIBUTES
Mojo::Exception implements the following attributes. frames my $frames = $e->frames; $e = $e->frames([$frame1, $frame2]); Stack trace if available. # Extract information from the last frame my ($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash) = @{$e->frames->[-1]}; line my $line = $e->line; $e = $e->line([3, 'die;']); The line where the exception occurred if available. lines_after my $lines = $e->lines_after; $e = $e->lines_after([[4, 'say $foo;'], [5, 'say $bar;']]); Lines after the line where the exception occurred if available. lines_before my $lines = $e->lines_before; $e = $e->lines_before([[1, 'my $foo = 23;'], [2, 'my $bar = 24;']]); Lines before the line where the exception occurred if available. message my $msg = $e->message; $e = $e->message('Died at test.pl line 3.'); Exception message, defaults to "Exception!". verbose my $bool = $e->verbose; $e = $e->verbose($bool); Enable context information for "to_string".
METHODS
Mojo::Exception inherits all methods from Mojo::Base and implements the following new ones. inspect $e = $e->inspect; $e = $e->inspect($source1, $source2); Inspect "message", "frames" and optional additional sources to fill "lines_before", "line" and "lines_after" with context information. new my $e = Mojo::Exception->new; my $e = Mojo::Exception->new('Died at test.pl line 3.'); Construct a new Mojo::Exception object and assign "message" if necessary. to_string my $str = $e->to_string; Render exception. # Render exception with context say $e->verbose(1)->to_string; throw Mojo::Exception->throw('Something went wrong!'); Throw exception from the current execution context. # Longer version die Mojo::Exception->new('Something went wrong!')->trace->inspect; trace $e = $e->trace; $e = $e->trace($skip); Generate stack trace and store all "frames", defaults to skipping 1 call frame. # Skip 3 call frames $e->trace(3); # Skip no call frames $e->trace(0);
OPERATORS
Mojo::Exception overloads the following operators. bool my $bool = !!$e; Always true. stringify my $str = "$e"; Alias for "to_string".
SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicious.org>.