Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / PPI / Exception.pm
1 package PPI::Exception;
2
3 use strict;
4 use Params::Util qw{_INSTANCE};
5
6 use vars qw{$VERSION};
7 BEGIN {
8         $VERSION = '1.206';
9 }
10
11
12
13
14
15 #####################################################################
16 # Constructor and Accessors
17
18 sub new {
19         my $class = shift;
20         return bless { @_ }, $class if @_ > 1;
21         return bless { message => $_[0] }, $class if @_;
22         return bless { message => 'Unknown Exception' }, $class;
23 }
24
25 sub message {
26         $_[0]->{message};
27 }
28
29 sub callers {
30         @{ $_[0]->{callers} || [] };
31 }
32
33
34
35
36
37 #####################################################################
38 # Main Methods
39
40 sub throw {
41         my $it = shift;
42         if ( _INSTANCE($it, 'PPI::Exception') ) {
43                 if ( $it->{callers} ) {
44                         push @{ $it->{callers} }, [ caller(0) ];
45                 } else {
46                         $it->{callers} ||= [];
47                 }
48         } else {
49                 my $message = $_[0] || 'Unknown Exception';
50                 $it = $it->new(
51                         message => $message,
52                         callers => [
53                                 [ caller(0) ],
54                         ],
55                 );
56         }
57         die $it;
58 }
59
60 1;