Нужно ли бросать исключение, в случаях, когда данные не прошли валидацию?
Если это валидатор - достаточно вернуть ErrorResponse объект с ошибкой.
Если это вызов метода с не правильным данными - бросайте исключение.
Или достаточно просто занести код и сообщение ошибки в массив errors и при выводе работать с ним?
Не стоит, возвращайте сразу ErrorResponse.
Полезна ли информация с Исключений при валидации во время дебагга?
Да, так вы получаете stacktrace, помимо сообщения об ошибке.
Работа с ошибочными данными может вызвать ошибку непосредственно при их обработке.
Лучше не используйте ошибки, с ними не удобно работать, вместо этого исключения.
Вот вам пример, Assert::assert - это штука из либы
ko-ko-ko/assertpublic function loginAction(Request $request) : Response
{
try {
$userName = $request->request->get('userName');
$password = $request->request->get('password');
Assert::assert($userName, 'userName')->match('/^[\a-z\d]{3,32}$/i');
Assert::assert($password, 'password')->lengthBetween(6, 32);
} catch (\Throwable $exception) {
return new Response($exception->getMessage(), Response::HTTP_BAD_REQUEST);
}
try {
// Your business logic here
return Response();
} catch (\Throwable $exception) {
$this->get('logger')->error($exception->getMessage(), ['exception' => $exception]);
return new Response('Could not login', Response::HTTP_INTERNAL_SERVER_ERROR);
}
}