出于某种原因,我的 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) );
但它不起作用,502 bad gateway
直到我将所有控制器操作都用try/catch(\Exception $e)
.
我需要添加一些其他错误处理程序吗?我不清楚如何在 slim 4 应用程序中正确设置处理。
更新: 我发现ErrorMiddleware
默认情况下 slim 会捕获HttpException
正在扩展的 slim Exception
,但为什么不直接Exception
甚至Throwable
优雅地退出带有漂亮错误页面的应用程序