From ea623826396c3b028756e0f883646a4e4c817e25 Mon Sep 17 00:00:00 2001 From: franck cuny Date: Wed, 17 Nov 2010 11:45:27 +0100 Subject: try / catch error on middlewares --- lib/Net/HTTP/Spore/Role/Request.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/Net/HTTP/Spore/Role/Request.pm b/lib/Net/HTTP/Spore/Role/Request.pm index a0d61b1..0af15f7 100644 --- a/lib/Net/HTTP/Spore/Role/Request.pm +++ b/lib/Net/HTTP/Spore/Role/Request.pm @@ -46,11 +46,19 @@ sub _execute_middlewares_on_response { my ($self, $response, @middlewares) = @_; foreach my $mw ( reverse @middlewares ) { - my $res = $mw->($response); + my ($res, $error); + try { + $res = $mw->($response); + }catch{ + $error = 1; + $response->code(599); + $response->body({error => $_, body=>$response->body}); + }; $response = $res if ( defined $res && Scalar::Util::blessed($res) && $res->isa('Net::HTTP::Spore::Response') ); + last if $error; } $response; -- cgit 1.4.1