首页>代码>Spring boot+springdata jpa+thymeleaf+mysql手机商城(带后台管理系统)>/mall/src/main/java/priv/jesse/mall/aspect/GlobalExceptionHandler.java
package priv.jesse.mall.aspect;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartException;
import priv.jesse.mall.entity.pojo.ResultBean;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.io.Serializable;
import java.util.Set;

/**
 * 统一异常处理
 * 在Controller中抛出的异常,GlobalExceptionHandler中定义的处理方法可以起作用
 * 其他的业务层异常也可以单独处理
 *
 * @author dengweichang
 * @date 2017/9/18
 */
@ControllerAdvice
public class GlobalExceptionHandler implements Serializable{
    private static final long serialVersionUID = 1L;
    private static final Logger LOGGER = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     * 默认的异常处理
     *
     * @param req
     * @param e
     * @return
     * @throws Exception
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResultBean<String> defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
        //记录日志
        LOGGER.error(e.getMessage(), e);
        e.printStackTrace();
        ResultBean<String> r = new ResultBean<>(e);
        r.setData(req.getRequestURI());
        return r;
    }

    @ExceptionHandler(value = RuntimeException.class)
    public void runtimeExceptionHandler(HttpServletRequest req, HttpServletResponse res, Exception e) throws Exception {
        //记录日志
        LOGGER.error(e.getMessage(), e);
        req.setAttribute("msg", e.getMessage());
        //转发到error页面
        req.getRequestDispatcher("/mall/user/error.html").forward(req, res);
    }

    /**
     * 处理validation异常
     *
     * @param req
     * @param e
     * @return
     * @throws Exception
     */
    @ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseBody
    public ResultBean<String> validationExceptionHandler(HttpServletRequest req, ConstraintViolationException e) throws Exception {
        Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
        StringBuilder strBuilder = new StringBuilder();
        for (ConstraintViolation<?> violation : violations) {
            strBuilder.append(violation.getMessage() + ",");
        }
        LOGGER.error(strBuilder.toString(), e);
        ResultBean<String> r = new ResultBean(strBuilder.toString());
        r.setData(req.getRequestURI());
        return r;
    }


}
最近下载更多
212828939  LV16 3月13日
www3209  LV1 3月2日
wbw123  LV5 3月1日
3175665836  LV2 2023年12月7日
SDLFJL  LV6 2023年8月15日
zy3344  LV1 2023年7月3日
yzshabzbbdvw  LV4 2023年4月20日
微信网友_5988700142981120  LV2 2023年4月12日
计算机暴龙战士  LV19 2023年4月2日
robert_s  LV3 2023年2月20日
最近浏览更多
RZX031513  LV1 4月10日
啦啦啦嘿嘿嘿  LV5 4月9日
玖零定制问题修复  LV34 4月4日
zolscy  LV12 4月4日
nineninenine 3月31日
暂无贡献等级
夜上清元  LV8 3月15日
212828939  LV16 3月13日
123456c 3月13日
暂无贡献等级
www3209  LV1 3月2日
wbw123  LV5 3月1日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友