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