SpringBoot 2.x(七):优雅的处理异常

 

前言

异常的处理在我们的日常开发中是一个绕不过去的坎,在Spring Boot 项目中如何优雅的去处理异常,正是我们这一节课需要研究的方向。

异常的分类

在一个Spring Boot项目中,我们可以把异常分为两种,第一种是请求到达Controller层之前,第二种是到达Controller层之后项目代码中发生的错误。而第一种又可以分为两种错误类型:1. 路径错误 2. 类似于请求方式错误,参数类型不对等类似错误。

定义ReturnVO和ReturnCode

为了保持返回值的统一,我们这里定义了统一返回的类ReturnVO,以及一个记录错误返回码和错误信息的枚举类ReturnCode,而具体的错误信息和错误代码保存到了response.properties中,使用流进行读取。

ReturnVO

public class ReturnVO {      private static Properties properties = ReadPropertiesUtil.getProperties(System.getProperty("user.dir") + CommonUrl.RESPONSE_PROP_URL);      /**      * 返回代码      */     private String code;      /**      * 返回信息      */     private String message;      /**      * 返回数据      */     private Object data;       public Object getData() {         return data;     }      public void setData(Object data) {         this.data = data;     }      public String getMessage() {         return message;     }      public void setMessage(String message) {         this.message = message;     }      public String getCode() {         return code;     }      public void setCode(String code) {         this.code = code;     }      /**      * 默认构造,返回操作正确的返回代码和信息      */     public ReturnVO() {         this.setCode(properties.getProperty(ReturnCode.SUCCESS.val()));         this.setMessage(properties.getProperty(ReturnCode.SUCCESS.msg()));     }      /**      * 返回代码,这里需要在枚举中去定义      * @param code      */     public ReturnVO(ReturnCode code) {         this.setCode(properties.getProperty(code.val()));         this.setMessage(properties.getProperty(code.msg()));     }      /**      * 返回数据,默认返回正确的code和message      * @param data      */     public ReturnVO(Object data) {         this.setCode(properties.getProperty(ReturnCode.SUCCESS.val()));         this.setMessage(properties.getProperty(ReturnCode.SUCCESS.msg()));         this.setData(data);     }      /**      * 返回错误的代码,以及自定义的错误信息      * @param code      * @param message      */     public ReturnVO(ReturnCode code, String message) {         this.setCode(properties.getProperty(code.val()));         this.setMessage(message);     }      /**      * 返回自定义的code,message,以及data      * @param code      * @param message      * @param data      */     public ReturnVO(ReturnCode code, String message, Object data) {         this.setCode(code.val());         this.setMessage(message);         this.setData(data);     }      @Override     public String toString() {         return "ReturnVO{" +                 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信