powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше решить проблему с исключениями?
4 сообщений из 4, страница 1 из 1
Как лучше решить проблему с исключениями?
    #38296944
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую Spring MVC, все исключения обрабатываются в контроллере, например

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
@ControllerAdvice()
public class ControlAdvice {
    
    private static final Logger log = LoggerFactory.getLogger(ControlAdvice.class);
    
   
    @ExceptionHandler(value=MethodConstraintViolationException.class)     
    public ModelAndView methodConstraintException(MethodConstraintViolationException ex) {                                        
        
        log.error("ControlAdvice error: {}", ex.getMessage());
        
        
                        Set<String> errors = new HashSet<>();
                        
        		for (MethodConstraintViolation<?> violation : ex.getConstraintViolations()) {
        			log.info("Method Validation message: {}", violation.getMessage());
                                errors.add(violation.getMessage());
        		}
        
        
        // Redirect, Forward, ModelAndView, RedirectAttributes, FlashMap ?
        return new ModelAndView("forward:/error/);
        
        
    }




Так же есть контроллер для обработки ошибок

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
@Controller
@RequestMapping(value = "/error")
public class ErrorController {

    
    
    

    @RequestMapping(produces="text/html")
    @ResponseStatus(HttpStatus.OK)
    public ModelAndView modelError() {

        //Ответ при возникновении ошибки в случае "обычного" запроса
        return new ModelAndView();


    }
    
    @RequestMapping(produces="application/json")
    @ResponseBody
    @ResponseStatus(HttpStatus.OK)
    public Map modelErrorAjax() {

        
        
        //Ответ при возникновении ошибки в случае Ajax запроса
        return message;


    }
    
    



Мне требуется, что бы метод контроллера ControlAdvice при перехвате исключения, делал redirect(forword,modelAndView?) на контроллер ErrorController и при этом передавал сообщение(я), который уже будет отдавать ответ браузеру.
RedirectAttributes не поддерживается в методе отмеченном @ExceptionHandler, а обычный redirect c заголовком Location:... мне не нравиться, так как все сообщения передаются через URL, как обычный GET запрос.
...
Рейтинг: 0 / 0
Как лучше решить проблему с исключениями?
    #38296989
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас использую request.setAttribute(), но все это как-то криво чтоли)
...
Рейтинг: 0 / 0
Как лучше решить проблему с исключениями?
    #38297132
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
/**
* Catch IOException and redirect to a 'personal' page.
*/
@ExceptionHandler(IOException.class)
public ModelAndView handleIOException(IOException ex) {
logger.info("handleIOException - Catching: " + ex.getClass().getSimpleName());
return errorModelAndView(ex);
}
...
Рейтинг: 0 / 0
Как лучше решить проблему с исключениями?
    #38297354
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТимоН, ну так, а если запрос ajax. Писать точно такой же метод с @ResponseBody?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как лучше решить проблему с исключениями?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]