powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать обработку ошибок в spring-mvc
13 сообщений из 13, страница 1 из 1
Как организовать обработку ошибок в spring-mvc
    #38868933
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Встала задача сделать на сайте error page.

Знаю, что в spring mvc есть аннотация @ExceptionHandler.

Можно ловить Exception и отправлять на какую-то одну стандартную страницу.

Но у на 2 типа методов контроллера. Одни возвращают jsp, другие возвращают json.

Если для тех, кто возвращает jsp указаный подход применим, то как быть если контроллер возвращает json и завалился?
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38869095
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Но у на 2 типа методов контроллера. Одни возвращают jsp, другие возвращают json.
Из контроллёра JSON нельзя показать на клиенте без обработки.
Т.е. выход обоих контроллёров не равнозначен.
Значит и обработки при JSON будет ручная.
Например, вместо JSON отдать код ошибки HTTP
IMHO
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38869132
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно обеспечить в одном типе методов (например, отдающих JSON) бросание только одного исключения, и для него сделать свой @ExceptionHandler.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38869717
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. SakМожно обеспечить в одном типе методов (например, отдающих JSON) бросание только одного исключения, и для него сделать свой @ExceptionHandler.

Ну а если код уже написан и он бросает runtime и в одном и в другом случае?
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38869767
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если код уже написан, то его можно просто переделать.

Еще родился вариант: разнести методы на 2 контроллера. У каждого будет свой @ExceptionHandler.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38869850
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexander A. SakЕсли код уже написан, то его можно просто переделать.

Еще родился вариант: разнести методы на 2 контроллера. У каждого будет свой @ExceptionHandler.

Кода много. На данный момент нельзя быть уверенным, что нигде не вывалится Runtime exception. Не хотелось бы польтзователю stacktrace показывать
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38870589
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ловите исключения вызывайте setStatus(НужныйКод) и завершайте обработку запроса.
JSON клиент должен понять, что всё плохо, а человеку ошибку нарисует браузер.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38870604
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЛовите исключения вызывайте setStatus(НужныйКод) и завершайте обработку запроса.
JSON клиент должен понять, что всё плохо, а человеку ошибку нарисует браузер.
+1
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38870898
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Basil A. SidorovЛовите исключения вызывайте setStatus(НужныйКод) и завершайте обработку запроса.
JSON клиент должен понять, что всё плохо, а человеку ошибку нарисует браузер.
+1

ну допустм я ловлю throwable. Как мне понять откуда он прилетел?
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38870975
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
Приведи код.
На клиенте не нужны подробности. Только в логах.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38871705
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну допустм я ловлю throwable. Как мне понять откуда он прилетел?Исключения существуют для того, чтобы идентично обработать все однотипные исключения.
Если, внезапно, вам требуется знать место исключения, то вы или "желаете странного" или вам надо урезать try-блок.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38871759
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123redwhite90,
Приведи код.
На клиенте не нужны подробности. Только в логах.

Что непонятного в определении: "кода много. Настолько много, что пытаемся найти решение без переписывания кода".

Задача такая: клиент ни в коем случае не должен увидеть stacktrace. Точка.

Basil A. Sidorov Исключения существуют для того, чтобы идентично обработать все однотипные исключения.
Если, внезапно, вам требуется знать место исключения, то вы или "желаете странного" или вам надо урезать try-блок.

Тип исключений один - RuntimeExceptioin. Есть 2 типа методов, которые его могут бросать. 1 - методы возвращающие html.2 - методы, возвращающие json. Оборачивать каждый методов в try-catch - идея плохая, перерефакторить весь код возможности нет.

Даже если весь код перерефакторить, то это ещё не значит что там не будет ошибок.
...
Рейтинг: 0 / 0
Как организовать обработку ошибок в spring-mvc
    #38877372
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@ControllerAdvice

Там метод, например
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@ExceptionHandler(value=AccessDeniedException.class)     
public ModelAndView accessDenied(AccessDeniedException ex, HttpServletRequest request) {   

FlashMap outputFlashMap = RequestContextUtils.getOutputFlashMap(request);
outputFlashMap.put("mySuperError", error);       
return new ModelAndView("redirect:/error");

}


Далее

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@Controller
@RequestMapping(value = "/error")
public class ErrorController {


//Для JSP, HTML и т.д.
@RequestMapping(produces="text/html")
@ResponseStatus(HttpStatus.OK)
public ModelAndView model(@ModelAttribute("mySuperError") Error error) {

}

//Для JSON/AJAX
@RequestMapping(produces="application/json")
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public Map ajax(@ModelAttribute("mySuperError") Error error) {

}
}
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать обработку ошибок в spring-mvc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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