3

Dancer アプリケーション ( API ) からスローされたすべての例外とエラーをキャッチし、それらを HTTP ステータス コードを設定してハッシュ ( JSON としてシリアル化) を返す関数に渡すフックを設定しようとしています。

try/catch を使用するとすべて正常に動作しますが、フックに移動するとコードが実行されますが、関数ではなくデフォルトのエラー メカニズムを使用して応答が形成されます。

これは私が使用しているフックです:

# Handle errors
hook on_handler_exception => sub {
    my $e = shift;
    debug "ON HANDLER EXCEPTION";
    return API::Exception->handle($e); # sets status code and returns hash depending on the exception
};

haltreturn の代わりに使用して、例外のそれ以上の処理を停止しようとしましたが、何も変更されませんでした。

ダンサーでこれをどのように達成しますか? ありがとう。

4

2 に答える 2

0

Dancer::Errorのコードを見てください。

のようなものだと思います

my $content = Dancer::Engine->engine("template")->apply_renderer($template_name, $ops);
    return Dancer::Response->new(
        status => $self->code,
        headers => ['Content-Type' => 'text/html'],
        content => $content);

_render_htmlメソッドからあなたを助けることができます。

于 2013-02-05T15:31:21.783 に答える