X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=32aea5709f08eba01fff1be4f15696d670ea1769;hb=65e90e1c95aa917c16ae65e231fa2be3f5862f0f;hp=d3880e667137fcaa908d7a822d3fa0dab51c0b30;hpb=7d670fb446850f89dc7ee626cda155e72320732e;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index d3880e6..32aea57 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -127,7 +127,7 @@ __PACKAGE__->stats_class('Catalyst::Stats'); __PACKAGE__->_encode_check(Encode::FB_CROAK | Encode::LEAVE_SRC); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.90072'; +our $VERSION = '5.90077'; sub import { my ( $class, @arguments ) = @_; @@ -1775,7 +1775,16 @@ sub execute { if ( my $error = $@ ) { #rethow if this can be handled by middleware - if(blessed $error && ($error->can('as_psgi') || $error->can('code'))) { + if( + !$c->config->{always_catch_http_exceptions} && + blessed $error && ( + $error->can('as_psgi') || + ( + $error->can('code') && + $error->code =~m/^[1-5][0-9][0-9]$/ + ) + ) + ) { foreach my $err (@{$c->error}) { $c->log->error($err); } @@ -1957,6 +1966,7 @@ sub finalize_error { } else { my ($error) = @{$c->error}; if( + !$c->config->{always_catch_http_exceptions} && blessed $error && ($error->can('as_psgi') || $error->can('code')) ) { @@ -2101,7 +2111,16 @@ sub handle_request { $status = $c->finalize; } catch { #rethow if this can be handled by middleware - if(blessed $_ && ($_->can('as_psgi') || $_->can('code'))) { + if( + !$class->config->{always_catch_http_exceptions} && + blessed($_) && ( + $_->can('as_psgi') || + ( + $_->can('code') && + $_->code =~m/^[1-5][0-9][0-9]$/ + ) + ) + ) { $_->can('rethrow') ? $_->rethrow : croak $_; } chomp(my $error = $_); @@ -3490,6 +3509,13 @@ There are a number of 'base' config variables which can be set: =item * +C - As of version 5.90060 Catalyst +rethrows errors conforming to the interface described by +L and lets the middleware deal with it. +Set true to get the deprecated behaviour and have Catakyst catch HTTP exceptions. + +=item * + C - The default model picked if you say C<< $c->model >>. See L<< /$c->model($name) >>. =item *