map insert异常失败_全局异常统一处理,美滋滋!

6c05ae6ec4f32b58dad6b49f19fd92c0.png

为什么要异常统一处理

  1. 用户体验很重要

  2. 提高开发效率

  3. 不需要重复处理异常

自定义异常类

import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class MyException extends RuntimeException {    private Integer code;    public MyException(String msg){        super(msg);    }    public MyException(Integer code,String msg){        super(msg);        this.code=code;    }}

自定义枚举

import lombok.Getter;import lombok.Setter;@Getterpublic enum ResultEnum {    SUCCESS(200,"成功"),    FAIL(100,"失败"),    EXCEPTION(300,"系统异常"),    UNLOGIN(201,"未登录"),    FORBIDDEN(403, "您没有权限访问!"),    NOT_FOUND(404, "资源不存在!"),    ERROR(500, "服务器内部错误!");    private Integer code;    private String msg;    private ResultEnum(Integer code,String msg){        this.code=code;        this.msg=msg;    }    public void setCode(Integer code){        this.code=code;    }}

全局异常统一处理

import com.xyl.xylshiro.exception.MyException;import org.apache.shiro.authz.AuthorizationException;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.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;import java.util.HashMap;import java.util.Map;@ControllerAdvicepublic class MyExceptionAdviceController {    /**     * 全局异常捕捉处理     * @param e     * @return     */    @ExceptionHandler(Exception.class)    public String errorHandler(Exception e, HttpServletRequest request) {        request.setAttribute("javax.servlet.error.status_code",ResultEnum.ERROR.getCode());        Map<String,Object> map = new HashMap<String,Object>();        map.put("code",ResultEnum.ERROR.getCode());        map.put("msg",e.getMessage());        request.setAttribute("ext", map);//放在request中的数据,在前端页面中都可以取出来      /* 在Freemark中这里需要注意的是error跳转页面,       前端错误页面需要放在templates/error页面下如果需要自己改的话       需要自定义模板路径*/        return "forward:/error";    }}

错误页面放置

b151c5a67395b65bfa208fc76fdcb0e7.png

本地测试localhost:8080/exception

@RequestMapping("/exception")    public ResponseVo exception(String name, String pwd) throws Exception {        String realname = "xxxxx";        String realPwd = "123";        if (null != name && name.equals("xx")) {            throw new Exception("系统异常!");        }        if (StringUtils.isEmpty(name) || StringUtils.isEmpty(pwd)) {            throw new MyException("参数必须传!");        } else if (!name.equals(realname) || !pwd.equals(realPwd)) {            throw new MyException("用户名或密码不正确!");        } else if (name.equals("aa")) {            throw new MyException(200, "用户名存在!");        }        String info = "你好[" + name + "]!";        ResponseVo success = ResultUtil.success("输入成功", info);        return ResultUtil.success("输入成功",info);    }

异常报错处理

e33e209e19dc0f3c46b59b11f0984b04.png

返回错误页面

55ec8e9d1aeddc5de1fec525e29a6662.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值