X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FException.pm;h=75064830f360abb46d90d78e3c109b9f7a50f24b;hb=1d00b2ffb8806bd0a8190ee8580a85895e48f8e4;hp=c8d55479618b1083df0839789465f58bad03ce7f;hpb=62ef37bfeea1b4e5ec03ad4053d3ed7816758844;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Exception.pm b/lib/Catalyst/Exception.pm index c8d5547..7506483 100644 --- a/lib/Catalyst/Exception.pm +++ b/lib/Catalyst/Exception.pm @@ -2,12 +2,6 @@ package Catalyst::Exception; # XXX: See bottom of file for Exception implementation -package Catalyst::Exception::Base; - -use Moose; -use Carp; -use namespace::clean -except => 'meta'; - =head1 NAME Catalyst::Exception - Catalyst Exception Class @@ -32,48 +26,6 @@ This is the Catalyst Exception class. Throws a fatal exception. -=cut - -has message => ( - is => 'ro', - isa => 'Str', - default => sub { $! || '' }, -); - -use overload - q{""} => \&as_string, - fallback => 1; - -sub as_string { - my ($self) = @_; - return $self->message; -} - -around BUILDARGS => sub { - my ($next, $class, @args) = @_; - if (@args == 1 && !ref $args[0]) { - @args = (message => $args[0]); - } - - my $args = $class->$next(@args); - $args->{message} ||= $args->{error} - if exists $args->{error}; - - return $args; -}; - -sub throw { - my $class = shift; - my $error = $class->new(@_); - local $Carp::CarpLevel = 1; - croak $error; -} - -sub rethrow { - my ($self) = @_; - croak $self; -} - =head2 meta Provided by Moose @@ -89,19 +41,30 @@ it under the same terms as Perl itself. =cut -Catalyst::Exception::Base->meta->make_immutable; - -package Catalyst::Exception; +{ + package Catalyst::Exception::Base; -use Moose; -use namespace::clean -except => 'meta'; + use Moose; + use namespace::clean -except => 'meta'; -use vars qw[$CATALYST_EXCEPTION_CLASS]; + with 'Catalyst::Exception::Basic'; -BEGIN { - extends($CATALYST_EXCEPTION_CLASS || 'Catalyst::Exception::Base'); + __PACKAGE__->meta->make_immutable; } -__PACKAGE__->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'); + } + + __PACKAGE__->meta->make_immutable; +} 1;