Spring全局处理开启方式
编写Java类实现HandlerExceptionResolver 接口 需要打上标注 或者在配置文件中定义当前Bean组件
实现接口重写方法 返回ModelAndView
@Controller
public class TestException implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest req, HttpServletResponse rep, Object arg2,
Exception e) {
ModelAndView mv = new ModelAndView();
if(e instanceof RuntimeException){
mv.setViewName("res/error1");
}else{
mv.setViewName("res/error2");
}
return mv;
}
}
局部处理异常
注意局部处理异常只包括当前控制器内出现异常才会走局部异常如果是调用的 B方法出现的异常不会走局部异常
只需要在殿前控制器中 编写一个方法 标注@ExceptionHandler 就会走该方法的异常处理 优先局部异常
@RequestMapping("/error.do")
public String error(){
throw new RuntimeException("局部异常处理");
}
@ExceptionHandler
public String processError(Exception e) {
System.out.println(e.getMessage());
return "res/error3";
}