php - Slim 框架忽略 fatal error 的自定义错误处理程序

标签 php error-handling slim

对于我的新 SPA 的后端,我想通过使用自定义错误和异常处理程序以一种很好的方式将错误传递到前端。

我可以像这样向 slim 框架添加自定义错误处理程序:

$app->error(function (Exception $e) use ($app) {
   // do stuff
}

然而,这不会捕获 fatal error 。我还定义了一个全局默认错误处理程序,只要它们发生在 Slim 上下文之外,它就会捕获 fatal error 。

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 自定义错误处理程序捕获 fatal error ?

最佳答案

试试这个:

use Slim\Slim;

$app = new Slim();

register_shutdown_function('fatal_handler');

function fatal_handler()
{
    if(! is_null(error_get_last()))
    {
        echo('There is a fatal error!');
    }
}

require 'xxxx';

$app->get('/test', function () use ($app)
{
    echo('This is a test');
});

$app->run();

关于php - Slim 框架忽略 fatal error 的自定义错误处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23337835/

相关文章:

javascript - 提交表单后无法检索 POST 数据

php - 如何缓存当前经过身份验证的用户?

php - CakePHP 约定名称或连接的名称

php - 路由 : Too few arguments to function 1 passed 2 expected 上的 Laravel 策略

javascript - 错误验证在 AngularJS 中不起作用

php - 找不到 composer phpunit psr-4 自动加载类

php - 无法执行我的查询

ruby-on-rails - 自定义404无法从 Controller 触发

php - 将插入的数据[到数据库]发送回应用程序的推荐方法

php - 无法使用 cURL 将文件作为表单数据发送