note
Your Mother
<p>Ragged, semi-tested; been a long time I really stepped through this so consider this cargo-culting and refer to the docs; [metamod://Catalyst::Action::RenderView]. This idiom is common and useful if you don’t go to the trouble of getting the Plugin::CustomErrorMessage stuff set up.</p>
<code># In MyApp::Controller::Root…
sub render :ActionClass("RenderView") {}
sub end :Private {
my ( $self, $c ) = @_;
return if $c->response->body; # Stop, good or bad, it's been rendered.
$c->forward("render"); # Send to RenderView.
# If there was an error in the render above, process it and just output the error.
if ( my @err = @{ $c->error } )
{
$c->log->error("Error: " . join(", ", @err));
$c->response->status(503);
$c->response->body("There was an unrecoverable error: " . join(", ", @err));
# ^^^ Could contain user input like XSS attacks, so naïve/dangerous as shown.
# Echoing errors is a security problem in itself.
$c->clear_errors;
}
}
</code>
<p>Update 20211102: added a comment about danger of echoing errors and insecurity of sample code.</p>
11132683
11132683