package com.kmall.common.utils; import com.google.common.collect.Maps; import org.apache.shiro.authz.AuthorizationException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DuplicateKeyException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import java.util.HashMap; /** * 异常处理器 * * @author Scott * @email * @date 2016年10月27日 下午10:16:19 */ @RestControllerAdvice public class RRExceptionHandler { private Logger logger = LoggerFactory.getLogger(getClass()); /** * 自定义异常 */ @ExceptionHandler(RRException.class) public R handleRRException(RRException e) { R r = new R(); r.put("code", e.getCode()); r.put("msg", e.getMessage()); return r; } @ExceptionHandler(DuplicateKeyException.class) public R handleDuplicateKeyException(DuplicateKeyException e) { logger.error(e.getMessage(), e); return R.error("数据库中已存在该记录"); } @ExceptionHandler(AuthorizationException.class) public R handleAuthorizationException(AuthorizationException e) { logger.error(e.getMessage(), e); return R.error("没有权限,请联系管理员授权"); } @ExceptionHandler(Exception.class) public R handleException(Exception e) { logger.error(e.getMessage(), e); return R.error(e.getMessage()); } @ExceptionHandler(ApiRRException.class) public Object handleApiRRException(ApiRRException e) { HashMap result = Maps.newHashMap(); result.put("errno", e.getErrno()); result.put("errmsg", e.getErrmsg()); return result; } }