perl - 在 Dancer 中使用 Hooks 修改异常处理

我试图设置一个钩子(Hook)来捕获从我的 Dancer 应用程序(一个 API)抛出的所有异常和错误,并将它们传递给一个函数,该函数设置 HTTP 状态代码并返回哈希值(序列化为 JSON)。

当我使用 try/catch 时一切正常,但是当我将它移动到钩子(Hook)时它运行代码但响应是使用默认错误机制而不是我的函数形成的。

这是我正在使用的钩子(Hook):

# 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
};

我还尝试使用 halt 而不是 return 来停止对异常的任何进一步处理,但它没有改变任何东西。

我如何使用 Dancer 完成此操作?谢谢。

最佳答案

改用“on_route_exception”钩子(Hook)......

hook on_route_exception => sub
{
    my ( $exception ) = @_;
    error( $exception );
    status( 'error' );
    halt( { errors => [ { message => 'An unhandled exception occurred', code => 0 } ] } );
};

https://stackoverflow.com/questions/12963195/

相关文章:

python - 是否可以在 Pandas 中将 searchsorted 与 MultiIndex

python - 故意在python中制作一个孤儿进程

php - DOMDocument::save[domdocument.save]:无法打开流:权限

python - Python 中的伪随机二进制序列 (prbs)

maven - 从 Java 类路径加载 JRuby 脚本

hibernate - 带有关联表的 JPA 注解

heroku - 如何在 Heroku bash 或 Heroku Scheduler 中实现 He

c# - PDFSharp 使用 PdfTextField 作为位置和大小引用在 pdf 中插入图像

asp.net - 如何允许在 TinyMCE 中嵌入内联标签

Django 模型 - 共享公共(public)基类的不同对象类型的外键