Mojo::Exception

Section: User Contributed Perl Documentation (3)
Updated: 2018-11-22
Page Index
 

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, <https://mojolicious.org>.


 

Index

NAME
SYNOPSIS
DESCRIPTION
ATTRIBUTES
frames
line
lines_after
lines_before
message
verbose
METHODS
inspect
new
to_string
throw
trace
OPERATORS
bool
stringify
SEE ALSO