gpt4 book ai didi

symfony - 我应该在 Controller 或服务中记录错误吗?

转载 作者:行者123 更新时间:2023-12-04 08:32:37 25 4
gpt4 key购买 nike

我有一个 Symfony Controller ,它基本上检查请求的参数是否在请求中,然后将这些参数传递给服务。该服务使用 Guzzle 调用 API,对结果执行一些操作,然后将其传递回 Controller 以显示带有响应的 Json。

我有一个关于错误处理的菜鸟问题,如果我用 Guzzle 调用的 Api 返回错误,最好的解决方案是什么?

解决方案 1:我是否应该使用在我自己的服务中注入(inject)的 Logger 服务记录错误并将错误返回给我的 Controller 以显示它。

解决方案 2:我是否应该在服务中抛出异常,在我的 Controller 中捕获它并在 Controller 中使用 $this->get("Logger") 以便在日志文件中记录错误

最佳答案

如果就好了您的核心逻辑本身在服务中,而不是在您的 Controller 中 .

这样,您可以在调用另一个服务的服务中使用 try-catch block ,并且您的 Controller 保持干净整洁 - 您只需调用该服务而不会捕获任何异常。

// AppBundle/src/Controller/MainController.php
public function mainAction()
{
// ...
$result = $this->get('my_service')->getResult($parameters);
if (!$result) {
// show an error message, pass it to another service, ignore it or whatever you like
}
}

// AppBundle/src/Service/MyService.php
public function getResult($parameters)
{
try {
$apiResult = $this->apiService->get($parameters);
} catch (ApiException $e)
$this->logger->error('My error message');
$apiResult = null;
}

return $apiResult;
}

还可以考虑 解决方案3 : 在服务中抛出异常并捕获它 in a custom exception listener ,您可以在其中记录它并采取进一步的措施(例如替换 Response 对象等)。

关于symfony - 我应该在 Controller 或服务中记录错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41998917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com