[Dancer-users] Error handling

Alex C calyx238 at gmail.com
Tue Apr 24 16:58:08 CEST 2012


>> On 23 April 2012 08:01, Joel Roth <joelz at pobox.com> wrote:
>> > Can someone help me find an example of how to use Dancer::Error
>> > and Dancer::Response.
>> >
>> > This code (based on man Dancer::Error) gets runtime error
>> > "can't find object method set via package Dancer::Response"
>> >
>> > ------- code ---
>> > get 'quux' => sub { err_not_found ( 'quux' ) };
>> >
>> > sub err_not_found {
>> >    my $path = shift;
>> >        my $error = Dancer::Error->new(
>> >            code => 404,
>> >            content => "No such file: $path",
>> >        );
>> >        Dancer::Response->set($error->render);
>> > }
>> > ----------------
>> >
>> > Thanks,
>> >
>> > Joel
> --
> Joel Roth
> _______________________________________________
> Dancer-users mailing list
> Dancer-users at perldancer.org
> http://www.backup-manager.org/cgi-bin/listinfo/dancer-users

On 24 April 2012 13:19, Joel Roth <joelz at pobox.com> wrote:
> On Tue, Apr 24, 2012 at 12:19:41PM +0100, Alex C wrote:
>> I think the example in the Dancer::Errror documentation is wrong.
>> The render method will build the reponse for you, so there is no need to
>> use Dancer::Response.
>>
>> Try this:
>>
>> get '/quux' => sub { err_not_found ( '/quux' ) };
>>
>> sub err_not_found {
>>     my $path = shift;
>>         my $error = Dancer::Error->new(
>>             code    => 404,
>>             message => "No such file: $path",
>>         );
>>         $error->render;
>> }
>
> Thanks, this works.
>
> The man page should be updated to read as follows:
>
> ---- quote ----
> # taken from send_file:
>
>   use Dancer::Error;
>
>   my $error = Dancer::Error->new(
>           code    => 404,
>           message => "No such file: '$path'"
>   );
>
>   $error->render;
> ----------------
>
> The entry for the "render" method could also more complete,
> for example as follows:
>
> ----- quote -----
> render
>
> Renders a response using Dancer::Response.
>
> The method displays the "message" field and detailed debug
> information under the environment setting "show_errors: 1".
>
> Only the error number and the message "runtime error"
> are displayed under the environment setting "show_errors: 0".
> -----------------
>
>

I sent a small patch to the docs:

https://github.com/sukria/Dancer/pull/784


More information about the Dancer-users mailing list