iBa*_*mer 8 service logging controller symfony monolog
我有一个Symfony控制器,它基本上检查请求中是否有请求的参数,然后将这些参数传递给服务.该服务使用Guzzle来调用API,对结果做一些事情然后将其传递回控制器以显示带有响应的Json.
我有一个关于错误处理的noob问题,如果我用Guzzle调用的Api返回错误,最好的解决方案是什么?
解决方案1:我是否应该使用我自己的服务中注入的Logger服务来记录错误,并将错误返回给我的控制器以显示它.
解决方案2:我应该在服务中抛出异常,在我的控制器中捕获它并在控制器中使用$ this-> get("Logger")以便在日志文件中记录错误
如果您的核心逻辑本身在服务中而不是在您的控制器中,那就太好了。
这样,您可以在调用另一个服务的服务中使用 try-catch 块,并且您的控制器保持干净整洁 - 您只需调用该服务而不会捕获任何异常。
// 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;
}
Run Code Online (Sandbox Code Playgroud)
还考虑解决方案 3:在服务中抛出异常并在自定义异常侦听器中捕获它,您可以在其中记录它并采取进一步的操作(例如替换 Response 对象等)。
| 归档时间: |
|
| 查看次数: |
1196 次 |
| 最近记录: |