Provided by: libmojolicious-perl_7.59+dfsg-1ubuntu1_all bug

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>.