代码之家  ›  专栏  ›  技术社区  ›  danny.lesnik

弹簧3.0 MVC异常处理程序

  •  4
  • danny.lesnik  · 技术社区  · 15 年前

    我正在从SpringMVC控制器编写异常处理程序,我有以下代码:

    @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()返回message“/by zero”。

    现在我尝试通过以下方式抛出第二个异常:

    String test = null;
    System.out.println(test.charAt(2));
    

    引发异常,但exception.getmessage()返回空值,堆栈跟踪也为空。

    有趣的是,在log4j记录器中,我看到了两个异常的完整堆栈跟踪。 为什么会这样?

    2 回复  |  直到 15 年前
        1
  •  3
  •   hisdrewness    15 年前
        2
  •  1
  •   Affe    15 年前