Spring MVC企业级 异常处理方式

前提:返回给前端 JSON字符串需要jackson包或其他支持的包(GSON等)。 

  • 定义一个枚举类 包含 返回前端的参数,以及枚举类的实例(根据所需要的异常状态自定义)
​
public enum MyStatus {
    //
   OK(200,"成功") ,
   ERROR(400,"失败");
    private int status;

    private String message;

    MyStatus(int status, String message) {
        this.status = status;
        this.message = message;
    }
    MyStatus(){}
    public  int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

​

定义一个ExceptionMessage类(用于Controller层处理异常状态信息),有参构造传入枚举类供Controller层调用

public class ExceptionMessage  {

    private int status;
    private String name;

    public ExceptionMessage(MyStatus myStatus) {
        this.status = myStatus.getStatus();
        this.name = myStatus.getMessage();
    }

    public ExceptionMessage() {

    }


    public int getStatus() {
        return status;
    }

    public void setStatus(int status) {
        this.status = status;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

自定义MyException类 继承 RuntimeException 异常类  作用:供Controller层  aop切面处理异常

public class MyException extends  RuntimeException {
    private MyStatus myStatus;
    public MyException(MyStatus myStatus) {
        this.myStatus = myStatus;
    }

    public MyStatus getMyStatus() {
        return myStatus;
    }

    public void setMyStatus(MyStatus myStatus) {
        this.myStatus = myStatus;
    }
}
  • 控制层处理前端传来的异常信息: 这里以传进type类型为例
    @Controller
    public class ExceptionController {
    
    @GetMapping("exception")
        @ResponseBody
        public ExceptionMessage exceptionMessage(int type) {
        if(type==1){
    // return new ExceptionMessage(MyStatus.OK);直接返回错误,没抛出异常
            throw  new MyException(MyStatus.OK);//抛出异常
        }else {
            throw new MyException(MyStatus.ERROR);//抛出异常
        }
    
      }
    
    }
    将抛出的异常给aop处理,并以字符串的形式返回给前端
  • @RestControllerAdvice
    
    public class JsonExceptionHandler {
        //要处理的异常类.class
        @ExceptionHandler(MyException.class)
        public ExceptionMessage myExceptionHandler(MyException e){
    
        return  new ExceptionMessage(e.getMyStatus());
    }
    
    }
    

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值