/**
* 异常处理器
*/
@RestControllerAdvice //
public class BDExceptionHandler {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
LogService logService;
//
// /**
// * 自定义异常
// */
// @ExceptionHandler(BDException.class)
// public R handleBDException(BDException e) {
// logger.error(e.getMessage(), e);
// R r = new R();
// r.put("code", e.getCode());
// r.put("msg", e.getMessage());
// return r;
// }
//
@ExceptionHandler(DuplicateKeyException.class)
public AppR handleDuplicateKeyException(DuplicateKeyException e) {
logger.error(e.getMessage(), e);
return AppR.error("数据库中已存在该记录");
}
//
//404 @ExceptionHandler(org.springframework.web.servlet.NoHandlerFoundException.class)
// public R noHandlerFoundException(org.springframework.web.servlet.NoHandlerFoundException e) {
// logger.error(e.getMessage(), e);
// return R.error(404, "没找找到页面");
// } @ExceptionHandler(AuthorizationException.class)
public Object handleAuthorizationException(AuthorizationException e, HttpServletRequest request) {
logger.error(e.getMessage(), e);
/*if (HttpServletUtils.jsAjax(request)) {
return AppR.error(403, "未授权");
}*/
return AppR.error(403, "未授权");
}
@ExceptionHandler(SecurityException.class)
public Object handleSecurityException(SecurityException e, HttpServletRequest request) {
//System.out.println("111111111111111");
logger.error(e.getMessage(), e);
return AppR.error(404, "找不到路径");
} @ExceptionHandler({Exception.class})
public Object handleException(Exception e, HttpServletRequest request, HttpServletResponse response) { LogDO logDO = new LogDO();
logDO.setGmtCreate(new Date());
//logDO.setOperation(Const);
logDO.setMethod(request.getRequestURL().toString());
logDO.setParams(e.toString());
/*UserDO current = ShiroUtils.getUser();
if(null!=current){
logDO.setUserId(current.getUserId());
logDO.setUsername(current.getUsername());
}*/
// logService.save(logDO);
//System.out.println(e.getMessage()); //System.out.println(HttpServletUtils.jsAjax(request));
/*if (HttpServletUtils.jsAjax(request)) {
System.out.println("ajax"); }*/
logger.error(e.getMessage(), e);
//System.out.println(response.getStatus());
return AppR.error(500, "系统错误");
}
}

@ControllerAdvice注解的类可以全局拦截指定的异常,并做想要的包装处理,比如跳转到别的页面,或者返回指定的数据格式等等。

@ExceptionHandler:统一处理某一类异常

最新文章

  1. android自定义控件(1)-点击实现开关按钮切换
  2. maven3.04管理jetty9.2.10启动web项目
  3. 微信公共平台开发2 .net
  4. HDU 3336 - Count the string(KMP+递推)
  5. PHP面向对象的继承
  6. 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”
  7. maven跳过单元测试
  8. silverlight visifire控件图表制作——silverlight 后台方法画图
  9. 苦B的程序猿道路数据验证
  10. …… are only available on JDK 1.5 and higher 错误(spring 的jdk版本检测在jdk 8下的修订)
  11. XML跨平台,你懂的
  12. 使用OGG添加唯一标识字段到目标表
  13. Node.js server-side javascript cpu占用高
  14. 信用评分卡 (part 7 of 7)
  15. 【转】.Net Core中的Api版本控制
  16. Oracle EBS中有关Form的触发器的执行顺序
  17. 从DOS时代至移动互联网的技术路线回顾
  18. Alpha冲刺一 (5/10)
  19. 【转载】关于Android RecyclerView的那些开源LayoutManager
  20. react实现换肤功能

热门文章

  1. Lucene配置环境变量
  2. 使用Dockerfile定制ubuntu+nginx镜像
  3. web页面锁屏初级尝试
  4. GuavaCache本地缓存学习总结
  5. Webpack学习-Loader
  6. SharePoint CU、Hotfix和SP版本的区别
  7. goodsSearch初始化选中代码
  8. number类型精度分析
  9. python之路-----django 自定义cookie签名
  10. java第7次作业