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 | ||
a2f2cde9 | 42 | sub throw { |
43 | my $class = shift; | |
44 | my %params = @_ == 1 ? ( error => $_[0] ) : @_; | |
45 | ||
46 | my $message = $params{message} || $params{error} || $! || ''; | |
47 | ||
48 | local $Carp::CarpLevel = 1; | |
49 | ||
a80247cf | 50 | croak($message); |
a2f2cde9 | 51 | } |
52 | ||
3cdcf968 | 53 | =head2 meta |
54 | ||
55 | Provided by Moose | |
56 | ||
2f381252 | 57 | =head1 AUTHORS |
a2f2cde9 | 58 | |
2f381252 | 59 | Catalyst Contributors, see Catalyst.pm |
a2f2cde9 | 60 | |
61 | =head1 COPYRIGHT | |
62 | ||
536bee89 | 63 | This library is free software. You can redistribute it and/or modify |
a2f2cde9 | 64 | it under the same terms as Perl itself. |
65 | ||
66 | =cut | |
67 | ||
e5ecd5bc | 68 | Catalyst::Exception::Base->meta->make_immutable; |
69 | ||
3cdcf968 | 70 | package Catalyst::Exception; |
71 | ||
72 | use Moose; | |
a80247cf | 73 | use namespace::clean -except => 'meta'; |
74 | ||
3cdcf968 | 75 | use vars qw[$CATALYST_EXCEPTION_CLASS]; |
76 | ||
77 | BEGIN { | |
78 | extends($CATALYST_EXCEPTION_CLASS || 'Catalyst::Exception::Base'); | |
79 | } | |
80 | ||
6680c772 | 81 | __PACKAGE__->meta->make_immutable; |
e5ecd5bc | 82 | |
a2f2cde9 | 83 | 1; |