Обработка исключений в контроллере отдыха в Spring Boot - PullRequest
0 голосов
/ 23 мая 2019

Я создаю REST-сервис с Spring Boot. Я хотел бы знать, как лучше обрабатывать исключения в контроллере. Я видел другие вопросы и не нашел ответа.

Мой контроллер:

@GetMapping
public ResponseEntity<?> saveMyUser(){
    MyUser myUser = new MyUser(“Anna”);

    //throws SQLException
    MyUserDetails userDetails = userService.saveMyUser(myUser);

    //if successful
    return ResponseBody.ok(userDetails);
}

метод saveMyUser () UserService:

public MyUserDetails saveUser(MyUser) throws SQLException {...}

Итак, на данный момент у меня есть как минимум 2 простых варианта:

  1. Добавить исключение к сигнатуре метода. Здесь я могу положиться на Spring Boot для передачи всей информации об исключении и коде состояния клиенту. Однако не знаю, если это надежный подход.

  2. Окружите с помощью try / catch и передайте всю информацию об исключениях вручную.

Что может быть проще?

1 Ответ

2 голосов
/ 23 мая 2019

Вы можете создать дополнительный класс с аннотацией @ControllerAdivce, и позже вы сможете написать собственную логику ответа для каждого исключения, например:

@ControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler({SQLException.class})
public ResponseEntity<Object> sqlError(Exception ex) {
  return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Some SQL exception occured");
}
}

Кроме того, вы можете расширить ResponseEntityExceptionHandler и переопределить поведение по умолчанию для сопоставления исключений с ответом HTTP.

Кроме того, взгляните на это , оно содержит очень полезную информацию для вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...