Проблемы реализации обработчика исключений контроллера Spring 3

Я надеялся реализовать единственный "ExceptionController" для обрабатывания исключений, которые выдаются в осуществлении методов моих других контроллеров. Я не указал HandlerExceptionResolver в своем контексте приложения так согласно документации API, AnnotationMethodHandlerExceptionResolver должен быть запущен. Я проверил его как таковой в источнике. Итак, почему следующее не работает?

@Controller
public class ExceptionController {

  @ExceptionHandler(NullPointerException.class)
  public ModelAndView handleNullPointerException(NullPointerException ex) {
    // Do some stuff
    log.error(logging stuff)
    return myModelAndView;
  }
}

@Controller
public class AnotherController {

  @RequestMapping(value="/nullpointerpath")
  public String throwNullPointer() {
    throw new NullPointerException();
  }
}

Я вижу в журналах отладки, что три обработчика исключений по умолчанию просят относительно обработки исключения, но ничто не сделано, и я вижу, что "DispatcherServlet - не Мог завершить запрос". Сопровождаемый пользователем, отображаемым stacktrace и 500 Внутренних ошибок.

7
задан Peter Mortensen 16 April 2011 в 13:19
поделиться

2 ответа

Убедитесь, что ваш обработчик исключений возвращает представление, которое существует / сопоставляется с обработчиком.

5
ответ дан 7 December 2019 в 01:19
поделиться

Не думаю, что это хороший дизайн. Контроллеры в Spring обрабатывают HTTP-запросы и сопоставляются с URL-адресами. Я не думаю, что «исключение» уместно ни в одну из корзин. Для меня это похоже на неправильное использование Spring.

Исключением является не HTTP-запрос. Вы не сопоставляете исключение с URL-адресом. Поэтому я бы пришел к выводу, что контроллеры не предназначены для обработки как обработчики исключений.

Контроллеры являются частью Spring API, но ваш проект использует их не так, как задумано, поэтому он не работает. Переосмыслите свой дизайн.

1
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: