Я реализовал 2 ControllersAdvice для. обрабатывать исключение CommonAdvice и UserAdviceКак установить приоритет в ExceptionHandling через ControllerAdvice
Общие Advice
@ControllerAdvice(annotations = RestController.class)
public class CommonAdvice {
@ExceptionHandler(Exception.class)
public ResponseEntity<ExceptionBean> handleException(Exception e) {
ExceptionBean exception = new ExceptionBean(Causes.ANOTHER_CAUSE);
return new ResponseEntity<ExceptionBean>(exception, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
UserAdvice
@ControllerAdvice(assignableTypes = { requestUserMapper.class })
public class UserAdvice {
@ExceptionHandler(NotUniqueUserLoginException.class)
public ResponseEntity<ExceptionBean> handleAlreadyFound(NotUniqueUserLoginException e) {
System.out.println("this is me : " + Causes.USER_ALREADY_EXIST.toString());
ExceptionBean exception = new ExceptionBean(Causes.USER_ALREADY_EXIST);
return new ResponseEntity<ExceptionBean>(exception, HttpStatus.INTERNAL_SERVER_ERROR);
}
И теперь, когда я бросаю NotUniqueUserException, это CommonAdvice которые обрабатывают и исключение.
Я тестировал и UserAdvice отлично работает. Есть ли способ установить приоритет для этих классов?
@Edit - добавить Controllel Mapping
@RequestMapping(value = "add", method = RequestMethod.POST)
public ResponseEntity<GT_User> addUser(@RequestBody GT_User newUser) throws NotUniqueUserLoginException, Exception {
if (this.userService.exist(newUser.getLogin())) {
throw new NotUniqueUserLoginException(Causes.USER_ALREADY_EXIST.toString());
} else {
GT_User addesUser = this.userService.addUser(newUser);
return new ResponseEntity<GT_User>(addesUser, HttpStatus.OK);
}
}
может вы предоставляете фактический код контроллера и исключение stacktrace? – developer
вот вы. Но, как я уже сказал, когда. hasleException() прокомментирован, handleAlreadyFound() отлично работает. Когда я добавляю handleAlreadyfound() int того же класса, перед handleException), он тоже работает. Итак, это только проблема с piority ... Я думаю .. – VANILKA
OK ... извините ... Я нашел решение. Проблема была ... МОЙ АНГЛИЙСКИЙ ... Я искал приоритет. вместо ORDER ... Простая аннотация @Order разрешает мою проблему. – VANILKA