Если учетная запись не может быть создана, вы не хотите ничего возвращать.
По крайней мере, вы хотите вернуть 400
ответ об ошибке, чтобы сообщить клиенту о проблеме.
Вы можете использовать ResponseEntity
в качестве типа возврата вашего метода для сигнализации кода ответа. Это также означает, что вам придется изменить способ возврата объекта и в успешном случае.
Вы можете изменить метод таким образом, если вы не хотите передавать конкретное сообщение об ошибке, а только код ошибки:
public ResponseEntity<EmployeeBankAccountOutputDto> createBankAccount(@ApiParam("Account data") @RequestBody final EmployeeBankAccountInputDto accountCreationDto) {
try {
return ResponseEntity.ok(service.createBankAccount(accountCreationDto));
} catch (InvalidAccountDataException ex) {
log.warn(ex.getMessage());
return ResponseEntity.badRequest();
}
}
Если вы также хотите передать конкретное сообщение об ошибке, вы можете использовать тело ответа:
public ResponseEntity<EmployeeBankAccountOutputDto> createBankAccount(@ApiParam("Account data") @RequestBody final EmployeeBankAccountInputDto accountCreationDto) {
try {
return ResponseEntity.ok(service.createBankAccount(accountCreationDto));
} catch (InvalidAccountDataException ex) {
log.warn(ex.getMessage());
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
}
Обратите внимание, что если вам нужно выполнить эту обработку на нескольких контроллерах, это, вероятно, означает, что обработчик исключений будет более подходящим подходом.
Например, чтобы обрабатывать InvalidAccountDataException
единообразно:
@ControllerAdvice
public class MyExceptionHandler extends ResponseEntityExceptionHandler {
Logger LOGGER = LoggerFactory.getLogger(MyExceptionHandler.class);
@ExceptionHandler(value = { InvalidAccountDataException.class })
protected ResponseEntity<Object> handleGenericExceptions(InvalidAccountDataException ex, WebRequest request) {
log.warn(ex.getMessage());
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
}
Вы можете добавить больше методов для обработки большего количества типов исключений, если требуется, конечно.