У меня есть класс контроллера с методами REST, которые могут выдавать различные исключения.Я решил обработать эти исключения в отдельном классе, используя @ControllerAdvice и @ExceptionHandler для моих методов-обработчиков.Однако у меня проблема в том, что мои методы REST используют аннотации из другой библиотеки.Эта библиотека ловит исключение, которое выдает и мой метод REST.Теперь, когда я обрабатываю исключения глобально, а не через try / catch в методе REST напрямую, мое исключение всегда перехватывается другой библиотекой, а не моим собственным методом-обработчиком.Видимо, этот другой метод в библиотеке я использую выигрыши из-за аннотации.Как я могу привязать обработку исключений к своему собственному классу, чтобы никто не смог ее перехватить?
Мой метод REST:
@SomeLibraryAnnotation
@PostMapping(path = "/add", consumes = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity< ? > addItem(@RequestHeader HttpHeaders headers, @RequestBody MyDTO myDTO)
throws UnsupportedOperationException {
doSomethingWith(myDTO);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
Мой класс обработчика исключений:
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(UnsupportedOperationException.class)
public ResponseEntity<?> handleUnsupportedOperationException(UnsupportedOperationException e) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).body(e.getMessage());
}
}
Поскольку метод библиотеки также перехватывает исключение UnsupportedOperationException, он выигрывает из-за @SomeLibraryAnnotation, и исключение никогда не обрабатывается в моем классе обработчика.