【发布时间】:2014-06-13 19:22:46
【问题描述】:
对于我的新 SPA 的后端,我想通过使用自定义错误和异常处理程序以一种很好的方式将错误传递给前端。
我可以像这样向 slim 框架添加自定义错误处理程序:
$app->error(function (Exception $e) use ($app) {
// do stuff
}
但是,这不会捕获致命错误。我还定义了一个全局默认错误处理程序,只要它们发生在 Slim 上下文之外,它就会捕获致命错误。
set_error_handler(function() {
echo "Huston we got a problem";
die();
});
当我这样做时,这个处理程序会被很好地调用:
require "asdasd.php"; // trigger fatal error
$app->get("/test", $authenticate, function () use ($app) {
// useful stuff
});
但不是在我这样做时:
$app->get("/test", $authenticate, function () use ($app) {
require "asdasd.php"; // trigger fatal error
// useful stuff
});
最后一个演示实际上似乎触发了 php 默认错误处理程序。
有谁知道我怎样才能让 Slim 不对我的错误施展魔法,并让顶级处理程序被触发或让 Slims 自定义错误处理程序捕获致命错误?
【问题讨论】:
-
如果你在 Slim 配置中的 debug 参数设置为 true,自定义错误处理程序将不会捕获致命错误。
-
感谢您的评论,但已设置为 false。
标签: php error-handling slim