spring的全局异常处理:
代码如下:
1、在处理类上使用 @ControllerAdvice
2、使用 @ExceptionHandler 申明要处理异常的方法,要处理的异常可以用@ExceptionHandler 的属性value申明 也可以在方法参数中申明;
3、@ExceptionHandler 申明处理异常的方法不能重复异常类型,否则启动报错,申明的异常可以有父子集成的关系,捕获异常时先找子类再找父类
4、捕获异常的方法如果返回String则必须在方法上使用@ResponseBody注解,如果返回值是view则将返回类型改为ModelAndView
5、在controller的方法上不需抛出异常或处理异常
@ControllerAdvice public class GlobalDefaultExceptionHandler { @ExceptionHandler(value=NullPointerException.class) @ResponseBody public String defaultErrorHandler(HttpServletRequest req){ return "空指针异常"; } @ExceptionHandler @ResponseBody public String defaultErrorHandler(HttpServletRequest req,RuntimeException e){ String name = req.getParameter("name"); return name+"运行是异常"; } } @RequestMapping("/getDemo") public void getDome(){ String a = null; System.out.printf(a.toString()); }