package com.vincent.rsf.server.common.exception; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.common.utils.CommonUtil; import org.apache.ibatis.exceptions.PersistenceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; /** * 全局异常处理器 * * @author vincent * @since 2018-02-22 11:29:30 */ @ControllerAdvice public class GlobalExceptionHandler { private final Logger logger = LoggerFactory.getLogger(getClass()); @ResponseBody @ExceptionHandler(HttpRequestMethodNotSupportedException.class) public R methodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e, HttpServletResponse response) { e.printStackTrace(); CommonUtil.addCrossHeaders(response); return R.error("The request method is incorrect"); } @ResponseBody @ExceptionHandler(AccessDeniedException.class) public R accessDeniedExceptionHandler(AccessDeniedException e, HttpServletResponse response) { CommonUtil.addCrossHeaders(response); return R.parse(Constants.UNAUTHORIZED_CODE + "-" + Constants.UNAUTHORIZED_MSG); } @ResponseBody @ExceptionHandler(BusinessException.class) public R businessExceptionHandler(BusinessException e, HttpServletResponse response) { CommonUtil.addCrossHeaders(response); return R.parse(e.getMessage()); } @ResponseBody @ExceptionHandler(CoolException.class) public R coolExceptionHandler(CoolException e, HttpServletResponse response) { CommonUtil.addCrossHeaders(response); return R.error(e.getMessage()); } @ResponseBody @ExceptionHandler(BadSqlGrammarException.class) public R badSqlGrammarExceptionHandler(BadSqlGrammarException e, HttpServletResponse response) { logger.error("SQL 语法异常", e); CommonUtil.addCrossHeaders(response); return R.error("系统异常"); } @ResponseBody @ExceptionHandler(PersistenceException.class) public R persistenceExceptionHandler(PersistenceException e, HttpServletResponse response) { logger.error("MyBatis 持久化异常", e); CommonUtil.addCrossHeaders(response); return R.error("系统异常"); } @ResponseBody @ExceptionHandler(DataAccessException.class) public R dataAccessExceptionHandler(DataAccessException e, HttpServletResponse response) { logger.error("数据库访问异常", e); CommonUtil.addCrossHeaders(response); return R.error("系统异常"); } @ResponseBody @ExceptionHandler(Throwable.class) public R exceptionHandler(Throwable e, HttpServletResponse response) { logger.error("未处理异常", e); CommonUtil.addCrossHeaders(response); return R.error("系统异常"); } }