商户注册——异常处理

2.4.5 异常处理

2.4.5.1 异常信息格式

系统在交互中难免会有异常发生,前端为了解析异常信息向用户提示定义了异常信息的返回格式,如下:

1、返回response状态说明

状态码 说明
200 成功
401 没有权限
500 程序错误(需要自定义错误体)

2、自定义错误体

    {
   
        "errCode": "000000", "errMessage": "错误说明" 
    }            

2.4.5.2 异常处理流程

 {
               
    "timestamp": "20**20**‐**09**‐10T10:06:19.936 +0000", 
    "status": 500,     
    "error":  "Internal Server Error", 
    "message": "验证码错误",      
    "path":  "/merchant/merchants/register"            
 }        

截至目前系统并没有按照前端要求返回异常信息,测试如下: 注册商户时输入一个错误的验证码,返回信息如下:

从上边的返回信息得知,状态码为500符合要求,按前端的规范定义的错误信息要写在“errMessage” 中,显然不符合要求。

系统规范了异常处理流程,如下:
商户注册——异常处理_第1张图片

1、在服务层抛出自定义异常类型及不可预知异常类型。

​ 上图中BusinessException为系统的自定义异常类型,程序中在代码显示抛出该异常,此类异常是程序员可预知的。

​ 另一部分是系统无法预知的异常,如:数据库无法连接,服务器宕机等场景下所抛出的异常,此类异常是程序员无 法预知的异常。

2、应用层接收到服务层抛出异常继续向上抛出,应用层自己也可以抛出自定义异常类型及不可预知异常类型。

3、统一异常处理器捕获到异常进行解析。

​ 判断如果为自定义异常则直接取出错误代码及错误信息,因为程序员在抛出自定义异常时已将错误代码和异常信息指定。

​ 如果为不可预知的异常则统一定义为99999异常代码。

​ { “errCode”: “000000”, “errMessage”: “错误说明” }

4、统一异常处理器将异常信息格式为前端要求的格式响应给前端。服务端统一将异常信息封装在下边的Json格式中返回。

2.4.5.3 自定义业务异常类

  1. 在huiminpay-common工程的com.huiminpay.cache.common.domain包下添加业务异常类BusinessException:

package com.huiminpay.common.cache.domain;

public class BusinessException extends RuntimeException {
   
    //错误代码
    private ErrorCode errorCode;

    public BusinessException(ErrorCode errorCode) {
   
        this.errorCode = errorCode;
    }

    public BusinessException() {
   
    }

    public void setErrorCode(ErrorCode errorCode) {
   
        this.errorCode = errorCode;
    }

    public ErrorCode getErrorCode() {
   
        return errorCode;
    }
}

​ 2、定义错误代码

​ 在common工程专门定义了ErrorCode接口及CommonErrorCode通用代码。从资料文件夹的代码目录获取 CommonErrorCode.java类。

你可能感兴趣的:(惠民支付项目,java)