You could maybe try to implement something based on the 
docs 
http://mojolicious.org/perldoc/Mojolicious/Guides/Rendering#Rendering-exception-and-not_found-pages

FYI, I found I had to implement something similar to you in the 
around_action hook for the occasions where a package I didn't have control 
of decided to die. In a production environment, having control over the 
exceptions is important, and I couldn't find a better pattern.

On Thursday, 1 December 2016 17:52:29 UTC, Peter Valdemar Mørch wrote:
>
> Say in my controller I'm 5 levels deep and discover there is a problem 
> with the user's input. I call:
>
>     $c->render(
>         template => 'errors/badValues',
>         message => 'The value of foo cannot be "bar"',
>     );
>
> And now I want to stop the entire request right there. I guess the 
> behaviour I'm looking for is that of an exception - return up the call 
> stack - without having to do something with a return value and then
>
>     callSub()
>       or return;
>
> at every stack level. So what I've done is create an exception type and 
>
>     $c->render(
>         template => 'errors/badValues',
>         message => 'The value of foo cannot be "bar"',
>     );
>     die(StopRenderingException->new());
>
> And then in setup:
>
>     $self->hook( around_dispatch => sub {
>         my ( $next, $c ) = @_;
>         eval {
>             $next->();
>         };
>         if ($@) {
>             my $err = $@;
>             if (blessed($err) && $err->isa('StopRenderingException')) {
>                 return;
>             } else {
>                 die $err;
>             }
>         }
>     });
>
> It does have a hacky smell to it though. Is there a better best-practice?
>
> Peter
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to