Зависит от масштаба вашего проекта. Если ваш API используется многими приложениями, вы должны пойти по пути «поймать все и использовать формат JSON». Да, у вас было бы больше дел, но когда любое другое приложение в вашей компании может использовать ваш стандартный способ, они могут сэкономить много времени.
В большинстве проектов, в которых я принимал участие, у нас также был «стандартный способ» возврата наших сообщений об ошибках (также JSON):
@RestControllerAdvice
public class GlobalResourceExceptionHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(GlobalResourceExceptionHandler.class);
// the class ValidationError contains the properties the json should contain.
@ExceptionHandler(Exception.class)
public List<ValidationError> exceptionHandler(Exception e, HttpServletResponse response) {
LOGGER.warn("Exception thrown in a resource", e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return Collections.singletonList(new ValidationError(null, "unexpected exception"));
}
}
Вы можете расширить класс еще @ExceptionHandler
с.
Оказалось, что это довольно хороший способ, потому что он прост в реализации (также для небольших приложений) и охватывает много вопросов. Много значит в основном все, что связано с запросом отдыха. Из этого был исключен обработчик ресурсов, который предоставил приложение angular и уровень безопасности.
UPDATE:
Вывод: ловите все, когда у вас есть API, используемый многими приложениями. Вы должны использовать способ, показанный выше, чтобы начать обработку ошибок в обоих случаях (маленькое или большое приложение).