1.全局捕获异常
1.原理:使用AOP技术,采用异常通知,
1.@ExceptionHandler:表示拦截异常
2.@ControllerAdvice:是Controller的一个辅助类,最常用的是作为全局异常处理的切面;
3.@ControllerAddvice可以指定扫描范围;
4.@ControllerAddvice 约定了几种可行的返回值,如果是直接返回model类的话,需要使用
@ResponseBody进行JSon转换;
5.返回String,表示跳转到某个view;
返回modelAndview
返回model+@ResponseBody
/**
* 全局捕获异常
* 1.捕获返回json格式
* 2.捕获返回页面
* @author angel
*
*/
@ControllerAdvice(basePackages="com.example.demo")
public class MyExceptionHandlers {
//返回json格式
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String,Object> ErrorResult(){
//将错误日志存放到缓存中(Redis。。。中)
Map<String,Object> errorResult=new HashMap<String,Object>();
errorResult.put("errorMessag", "系统错误");
return errorResult;
}
//返回ModelAndView
@ExceptionHandler(RuntimeException.class)
public ModelAndView ErrorResultView(){
return new ModelAndView("error");
}
}