(入门SpringBoot)SpringBoot配置全局异常(五)

匿名 (未验证) 提交于 2019-05-27 06:11:41

Spring的全局异常,用于捕获程序员没有捕获的异常。具体请看下面代码:

1.ControllerAdvice拦截异常,统一处理.通过Spring的AOP来管理.

@ControllerAdvice
public class ExceptionHandle {

    /**
     * 要捕获什么异常:
     * @return 返回Result:
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result handle(Exception e){
        e.printStackTrace();
        if(e instanceof MyException){
            MyException myException = (MyException)e;
            return ResultUtil.error(myException.getCode(),myException.getMessage());
        }else{
            return ResultUtil.error(-1,"系统错误,请联系程序员");
        }
    }


}

  1. 因为原来的Exception只可以传msg,那么我们就可以自定义自己的异常,可以传code:


/**
 * 自定义异常类,因为Exception抛出只可以传消息,太不方便了.
 *        提示:RuntimeException, 源码:RuntimeException extends Exception
 *            并且Spring框架对RuntimeException才会回滚.Exception不会回滚.
 * create by xxx

 * 2019-05-26
 */
public class MyException extends RuntimeException {

    private Integer code;

    public MyException(ResultEnum resultEnum){
        super(resultEnum.getMsg());//父类可以穿个msg,Service层可以抛出MyException.
        this.code = resultEnum.getCode();
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
}

  1. 因为现在的项目有一些会返回code信息,但是随手定义一个不好维护,我们可以定义成枚举类型,对这些code,msg进行统一管理.

/**
 * created by : xxx

 * 2019-05-27
 */
public enum  ResultEnum {
    UNCO_ERROR(-1,"未知错误"),
    SUCCESS(0,"成功")
    ;
    /**
     * 编码:
     */
    private Integer code;
    /**
     * 消息:
     */
    private String msg;

    ResultEnum(Integer code,String msg){
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

 

每周VPS推荐 总有一款是你需要的!

没有找到想要的?点击这里去栏目页查看所有|点击这里搜索更多

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
如果有服务商和本站有合作意向,可以联系站长,QQ:121274060|邮箱:admin@e-learn.cn
了解到有朋友期望能在易学教程发布文章,奈何用户发布系统不完善,所以开通了码农岛,以供发布文章的需求
码农岛发布的文章需要同步到主站,可以加群联系群主
广告合作  |  商家投稿  |  易学教程交流群