Я пишу свой обработчик исключений из контроллера Spring MVC, и у меня есть следующий код:
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleMyException(NullPointerException exception) {
System.out.println(exception.getMessage());
ModelAndView modelAndView = new ModelAndView("/errors/404");
modelAndView.addObject("message", exception.getMessage());
return modelAndView;
}
и второй:
@ExceptionHandler(ArithmeticException.class)
public ModelAndView handleException(ArithmeticException exception) {
System.out.println(exception.getMessage());
ModelAndView modelAndView = new ModelAndView("/errors/404");
modelAndView.addObject("message", exception.getMessage());
return modelAndView;
}
Теперь я пишу свойкод для выброса этих исключений:
В первой строке выдается арифметическое исключение:
System.out.println(100/0);
Выдает правильное исключение, а exception.getMessage () возвращает сообщение "/ by zero".
теперь я пытаюсь выдать второе исключение с помощью:
String test = null;
System.out.println(test.charAt(2));
Возникает исключение, однако exception.getMessage () возвращает значение null, а трассировка стека также равна нулю.
Интересно то, что в log4j logger я вижу полную трассировку стека для обоих исключений.Почему так себя ведет?