Commit | Line | Data |
---|---|---|
a2f2cde9 | 1 | package Catalyst::Exception; |
2 | ||
3cdcf968 | 3 | # XXX: See bottom of file for Exception implementation |
a2f2cde9 | 4 | |
5 | package Catalyst::Exception::Base; | |
6 | ||
3cdcf968 | 7 | use Moose; |
a80247cf | 8 | use Carp; |
9 | use namespace::clean -except => 'meta'; | |
a2f2cde9 | 10 | |
11 | =head1 NAME | |
12 | ||
13 | Catalyst::Exception - Catalyst Exception Class | |
14 | ||
15 | =head1 SYNOPSIS | |
16 | ||
17 | Catalyst::Exception->throw( qq/Fatal exception/ ); | |
18 | ||
19 | See also L<Catalyst>. | |
20 | ||
21 | =head1 DESCRIPTION | |
22 | ||
23 | This is the Catalyst Exception class. | |
24 | ||
25 | =head1 METHODS | |
26 | ||
b5ecfcf0 | 27 | =head2 throw( $message ) |
a2f2cde9 | 28 | |
b5ecfcf0 | 29 | =head2 throw( message => $message ) |
ebfde331 | 30 | |
b5ecfcf0 | 31 | =head2 throw( error => $error ) |
a2f2cde9 | 32 | |
33 | Throws a fatal exception. | |
34 | ||
35 | =cut | |
36 | ||
9ffa230b | 37 | has message => ( |
38 | is => 'ro', | |
39 | isa => 'Str', | |
40 | ); | |
41 | ||
0af1b40c | 42 | use overload q{""} => \&as_string; |
43 | ||
44 | sub as_string { | |
45 | my ($self) = @_; | |
46 | return $self->message; | |
47 | } | |
48 | ||
a2f2cde9 | 49 | sub throw { |
50 | my $class = shift; | |
51 | my %params = @_ == 1 ? ( error => $_[0] ) : @_; | |
52 | ||
53 | my $message = $params{message} || $params{error} || $! || ''; | |
54 | ||
55 | local $Carp::CarpLevel = 1; | |
56 | ||
a80247cf | 57 | croak($message); |
a2f2cde9 | 58 | } |
59 | ||
3cdcf968 | 60 | =head2 meta |
61 | ||
62 | Provided by Moose | |
63 | ||
2f381252 | 64 | =head1 AUTHORS |
a2f2cde9 | 65 | |
2f381252 | 66 | Catalyst Contributors, see Catalyst.pm |
a2f2cde9 | 67 | |
68 | =head1 COPYRIGHT | |
69 | ||
536bee89 | 70 | This library is free software. You can redistribute it and/or modify |
a2f2cde9 | 71 | it under the same terms as Perl itself. |
72 | ||
73 | =cut | |
74 | ||
e5ecd5bc | 75 | Catalyst::Exception::Base->meta->make_immutable; |
76 | ||
3cdcf968 | 77 | package Catalyst::Exception; |
78 | ||
79 | use Moose; | |
a80247cf | 80 | use namespace::clean -except => 'meta'; |
81 | ||
3cdcf968 | 82 | use vars qw[$CATALYST_EXCEPTION_CLASS]; |
83 | ||
84 | BEGIN { | |
85 | extends($CATALYST_EXCEPTION_CLASS || 'Catalyst::Exception::Base'); | |
86 | } | |
87 | ||
6680c772 | 88 | __PACKAGE__->meta->make_immutable; |
e5ecd5bc | 89 | |
a2f2cde9 | 90 | 1; |