[dancer-users] dancer2's send_error() from module

icovnik icovnik at gmail.com
Mon Oct 1 10:44:35 BST 2018


I'm using Dancer2 for some small apps and now I came across some
difficulty when using Dancer2's send_error() function. This function
is meant to be used to emit HTTP error to client (of course) and to
stop processing current route at that point. It works OK if I use
send_error() in route directly or in some subroutine in current
module/package. But if I use send_error() from another module, it
doesn't stop there. The same if Other module is in the same file or
use'd from Other.pm.

So the question: how to properly use send_error() from another module
to finish the route right there on the spot?



Example code:

package Server;
use Dancer2;

get '/test' => sub {
    #send_error("err", 401); # 1: end of processing, error 401
    #myfunc();               # 2: end of processing, error 402
    Other::func();           # 3: processing continues, route returns 200 OK
    return "OK";

sub myfunc
    send_error("err", 402);
    # never hits this spot


package Other;
use Dancer2;

sub func
    send_error("err", 403);
    # happily continues here


More information about the dancer-users mailing list