Обработка исключений с @ControllerAdvice на весну Отдых - PullRequest
0 голосов
/ 01 октября 2018

У меня есть класс controllerAdvice, как показано ниже, для обработки двух исключений

@ControllerAdvice
public class MyGlobalExceptionHandler{
    @ExceptionHandler({ UserNotFoundException.class, ContentNotAllowedException.class }){

//my code here 

}

Теперь на контроллере, если я помещу свой код в блок try catch, достигнут ли эти два exception класса controllerAdvice?

@RequestMapping(value = "/myurl", method = RequestMethod.GET)
        public ResponseEntity<?>  getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {    
try{    
     //my code here that will throw  UserNotFoundException or ContentNotAllowedException
}Catch(Exception e){
    //handle exception here    
}

Я не мог понять, как будет происходить обработка исключений в приведенном выше примере.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

@ ControllerAdvice используется для перехвата исключений из контроллеров.Он используется, когда приложение имеет более одного контроллера, и конкретное исключение необходимо перехватить или обработать уникальным способом.Обработка исключений в контроллере зависит от того, как вы конструируете ResponseEntity в MyGlobalExceptionHandler.

0 голосов
/ 02 октября 2018

Может быть, вы можете сделать:

@RequestMapping(value = "/myurl", method = RequestMethod.GET)
public ResponseEntity<?>  getMyUrl(@Valid @ModelAttribute MyObject ap,BindingResult bindingResult ) {    
    try{    
        // Your code here that will throw  UserNotFoundException or ContentNotAllowedException
    } catch(Exception exception){

        if (exception instanceof UserNotFoundException || exception instanceof ContentNotAllowedException) {
             throw exception;
        }

        // Handle other types of exceptions here    
    }
}

, и тогда только UserNotFoundException и ContentNotAllowedException не будут обработаны, и ваш @ExceptionHandler метод в вашем @ControllerAdvice сможет обработать их.

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