X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FException.pm;h=b5b5bc330fdf39f292492100e04f7f44a381df6b;hb=ccf2a6da7ec998260d1e6737badd4faf661b0ad6;hp=deeb3c061f0b46d84f9a21444092a41303bd7229;hpb=6680c772eaa987eafdb32e9437fd2d649dc914d9;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Exception.pm b/lib/Catalyst/Exception.pm index deeb3c0..b5b5bc3 100644 --- a/lib/Catalyst/Exception.pm +++ b/lib/Catalyst/Exception.pm @@ -5,7 +5,8 @@ package Catalyst::Exception; package Catalyst::Exception::Base; use Moose; -use Carp (); +use Carp; +use namespace::clean -except => 'meta'; =head1 NAME @@ -33,29 +34,43 @@ Throws a fatal exception. =cut +has message => ( + is => 'ro', + isa => 'Str', +); + +use overload + q{""} => \&as_string, + fallback => 1; + +sub as_string { + my ($self) = @_; + return $self->message; +} + sub throw { my $class = shift; my %params = @_ == 1 ? ( error => $_[0] ) : @_; - my $message = $params{message} || $params{error} || $! || ''; + $params{message} = $params{message} || $params{error} || $! || ''; + my $error = $class->new(%params); local $Carp::CarpLevel = 1; - Carp::croak($message); + croak($error); } =head2 meta Provided by Moose -=head1 AUTHOR +=head1 AUTHORS -Sebastian Riedel, C -Christian Hansen, C +Catalyst Contributors, see Catalyst.pm =head1 COPYRIGHT -This program is free software, you can redistribute it and/or modify +This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut @@ -65,13 +80,14 @@ Catalyst::Exception::Base->meta->make_immutable; package Catalyst::Exception; use Moose; +use namespace::clean -except => 'meta'; + use vars qw[$CATALYST_EXCEPTION_CLASS]; BEGIN { extends($CATALYST_EXCEPTION_CLASS || 'Catalyst::Exception::Base'); } -no Moose; __PACKAGE__->meta->make_immutable; 1;