php - Slim 4错误处理未捕获基本异常

标签 php error-handling slim-4

出于某种原因,我的Slim 4应用程序错误处理程序未捕获\Exception可以捕获的错误,并且在浏览器中看到502 bad gateway错误,这是我的ErrorMiddleware配置(我正在使用PHP-DI进行配置):

   $definitions[ErrorMiddleware::class] = static function(ContainerInterface $container): ErrorMiddleware {
            $middleware = new ErrorMiddleware(
                $container->get(CallableResolverInterface::class),
                $container->get(ResponseFactoryInterface::class),
                (bool)$container->get(Config::class)->get('main.debug'), //false or true
                true,
                true
            );
            $middleware->setErrorHandler(HttpNotFoundException::class, $container->get(NotFoundHandler::class));


            return $middleware;
        };

我试图添加处理程序来处理500个这样的$middleware->setErrorHandler(HttpInternalServerErrorException::class, $container->get(NotFoundHandler::class) );错误

但是它不起作用,直到我将所有 Controller Action 都用502 bad gateway包围为止,我仍然看到try/catch(\Exception $e)

我是否需要添加其他错误处理程序?我还不清楚如何在Slim 4应用程序中正确设置处理。

更新:我发现默认情况下, slim ErrorMiddleware捕获了扩展HttpException的 slim Exception,但是为什么不直接使用Exception甚至Throwable来优雅地退出具有错误页面的应用程序

最佳答案

好的,这对我来说是不好的,而且还算是 slim ,因为ErrorMiddlware已配置为记录错误,所以它无法执行'log_error()'功能,但是我尚未安装和配置Monolog,因此将日志写入php-fpm日志中, nginx并引发502错误

关于php - Slim 4错误处理未捕获基本异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334307/

相关文章:

php - 如何在 Laravel 4 中覆盖 View::make()?

python - python错误处理和异常

php - mysql_fetch_row()期望参数1是资源,给定为 boolean 值..一次又一次地获得此消息以及类似的消息

php - Slim 4 中的路由中间件不会停止调用路由中的可调用对象

php - 如何使用 Slim-Skeleton 中演示的 PHP-DI 设置访问 slim4 的 routeParser?

Slim 4 将所有路由放入 Controller 中,无需 $app

php - session 变量的替代品?

javascript - 用 jquery 替换损坏的图像

php - 带有 WordPress/php 子目录的 MVC 网站上的 Elmah

c# - C#显示线程无效的跨线程访问问题