Add a message attribute to Exception::Base.
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Exception.pm
CommitLineData
a2f2cde9 1package Catalyst::Exception;
2
3cdcf968 3# XXX: See bottom of file for Exception implementation
a2f2cde9 4
5package Catalyst::Exception::Base;
6
3cdcf968 7use Moose;
a80247cf 8use Carp;
9use namespace::clean -except => 'meta';
a2f2cde9 10
11=head1 NAME
12
13Catalyst::Exception - Catalyst Exception Class
14
15=head1 SYNOPSIS
16
17 Catalyst::Exception->throw( qq/Fatal exception/ );
18
19See also L<Catalyst>.
20
21=head1 DESCRIPTION
22
23This 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
33Throws a fatal exception.
34
35=cut
36
9ffa230b 37has message => (
38 is => 'ro',
39 isa => 'Str',
40);
41
a2f2cde9 42sub 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
55Provided by Moose
56
2f381252 57=head1 AUTHORS
a2f2cde9 58
2f381252 59Catalyst Contributors, see Catalyst.pm
a2f2cde9 60
61=head1 COPYRIGHT
62
536bee89 63This library is free software. You can redistribute it and/or modify
a2f2cde9 64it under the same terms as Perl itself.
65
66=cut
67
e5ecd5bc 68Catalyst::Exception::Base->meta->make_immutable;
69
3cdcf968 70package Catalyst::Exception;
71
72use Moose;
a80247cf 73use namespace::clean -except => 'meta';
74
3cdcf968 75use vars qw[$CATALYST_EXCEPTION_CLASS];
76
77BEGIN {
78 extends($CATALYST_EXCEPTION_CLASS || 'Catalyst::Exception::Base');
79}
80
6680c772 81__PACKAGE__->meta->make_immutable;
e5ecd5bc 82
a2f2cde9 831;