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

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

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

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

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

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

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

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

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

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

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

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

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

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

Даже если весь код перерефакторить, то это ещё не значит что там не будет ошибок.
...
Рейтинг: 0 / 0
11.02.2015, 20:11
    #38877372
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать обработку ошибок в spring-mvc
@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
Форумы / Java [игнор отключен] [закрыт для гостей] / Как организовать обработку ошибок в spring-mvc / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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