@denlem
Programmer

Как избавиться от try-catch в контроллерах?

В REST-API проекте на Symfony есть куча контроллеров, где в каждом есть try-catch
Понятно, что это неправильно потому, что это повторяемость кода
Как избавиться от такого ***кода и вынести try-catch куда-то? Возможно вынести в отдельный метод либо есть другие удачные решения?

Пример роут метода контроллера:
/**
* @Route("/comment/create", name="comment_create", methods={"POST"})
*/
public function __invoke( Request $request ): JsonResponse {
  try {
    $data = $this->initRequestParams($request);
    $someService->doSomething($data);
  } catch (\Throwable $exception) {

    return new JsonResponse(['error' => 'Страница не найдена'], Response::HTTP_NOT_FOUND);
  }

  return new JsonResponse(null, Response::HTTP_CREATED);
}
  • Вопрос задан
  • 348 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Смотря для чего вы делаете эти try catch. Это не всегда повторяемость иногда действительно нужна, например, чтобы перебросить своё исключение. Пойти можно разными способами. Но а простой - это вам нужно просто их убрать и сделать Listener или Subscriber, который будет обрабатывать ошибки и отдавать их в нужном формате в api. Если правильно понял для чего нужно. Пример.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы