当前位置: 移动技术网 > IT编程>开发语言>Java > (入门SpringBoot)SpringBoot配置全局异常(五)

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

2019年05月27日  | 移动技术网IT编程  | 我要评论

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;
    }
}

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网