У нас есть микросервисная архитектура, которая состоит из модуля сервера основных приложений и модулей libs.На главном сервере приложений мы просто принимаем запрос и предоставляем ответ через объект запроса и ответа на методы REST API, которые вызывают уровни обслуживания, доступные в модуле libs.
parent--
------apps
---server
---Controller Class
------libs
---core
---Service Layer
---Dao Layer
Для распространения сообщений об ошибках, чтобы онимогут быть отправлены клиентам с использованием объекта ответа (доступно только в классах контроллера), мы создаем пользовательские исключения на уровне обслуживания, чтобы мы могли отправлять сообщения об ошибках в классы контроллера.Проблема с этим подходом заключается в том, что мы генерируем исключение во всех случаях. В качестве примера мы генерируем исключение, даже когда ввод неправильный или когда у пользователя нет разрешения, где мы можем просто вернуть пользователю ответ с сообщением об ошибке.
Мой вопрос заключается в том, что - Правильно ли выбрасывать пользовательское исключение только ради распространения сообщений об ошибках из уровня обслуживания в контроллер?Если НЕТ, то как мы можем распространить сообщение об ошибке на уровень контроллера?
Уровень обслуживания ---
public String serviceLayerMethod(String param) throws AssetException {
try {
if(param==null){
throw new CustomException;
} else{
return param;
}
} catch (CustomException e) {
LOGGER.error(CustomExceptionEnum.PARAMNULL_EXCEPTION.getMessage(),e);
throw new CustomException(CustomExceptionEnum.PARAMNULL_EXCEPTION.getMessage(), e);
}
}
КонтроллерСлой ---
public Response restAPI(Request request) {
try {
response.setMessage(service.serviceLayerMethod());
response.setSuccess(true);
} catch (CustomException e) {
response.setMessage(e.getMessage());
response.setSuccess(false);
}
return response
}