商户注册——异常处理

news2024/9/24 23:26:36

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、在服务层抛出自定义异常类型及不可预知异常类型。

​ 上图中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类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/907958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab使用教程(20)—插值基础

1.网格和散点样本数据 插值是在位于一组样本数据点域中的查询位置进行函数值估算的方法。函数值是根据最接近查询点的样本数据点计算的。MATLAB 根据样本数据的结构,可以执行两种插值。样本数据可以形成网格,也可以是分散的。 网格化的样本数据使得插值…

1688批发工厂商品详情数据接口、商品采集接口(标题、详情、价格、主图)

接口背景 阿里巴巴(1688.com)是全球企业间(B2B)电子商务的著名品牌,为数千万网商提供海量商机信息和便捷安全的在线交易市场,也是商人们以商会友、真实互动的社区平台。供应商在该平台上展示和销售各类商品,而买家可以根据自己的需求选择合适的商品进行采购。为了提…

嵌入式糊涂蛋--基础恢复

2023年8月21日,距离找工作还有约365天。 现阶段状态:嵌入式各相关原理遗忘较大,嵌入式相关项目较少。机器学习、强化学习、数学规划等算法知识学得杂乱。 嵌入式学习路线 图片来源于公众号CodeSheep 图片来源于公众号CodeSheep 图片来源…

CSS 小技能(一):HTML 两个图片竖着平铺、设置图片点击、设置滚动条颜色

下面的代码没有考虑响应式的效果&#xff0c;如果考虑的话还需要一些代码进行处理。 【注】当时写的时候仅考虑了 webkit 内核的浏览器&#xff0c;如果是 IE 或者其他浏览器&#xff0c;请增加额外的 CSS 样式进行控制。 <!DOCTYPE html> <html> <head>&l…

YZ系列工具:YZ07:VBA对工作簿事件的监听

【分享成果&#xff0c;随喜正能量】善心善行的你&#xff0c;利己利他&#xff0c;积累无量福德&#xff0c;菩萨常伴左右&#xff0c;保佑一生平安&#xff0c; 财运亨通&#xff0c;福禄双收。身如逆流船&#xff0c;心比铁石坚。。 我给VBA下的定义&#xff1a;VBA是个人小…

微星笔记本暑促好货多多,开学季选购看这里!

随着即将到来的学期的临近&#xff0c;学生族如何选择一款称手的笔记本&#xff0c;就提上了日程。各种产品定位取向&#xff0c;各种价格范围&#xff0c;如果没有明确自己的需求和预算&#xff0c;就有点不知所措了~OK&#xff0c;今天就让我们从需求&预算出发&#xff0…

代码随想录(三) 哈希表

哈希表&#xff1a; 1.有效的字母异位词 用数组 class Solution { public:bool isAnagram(string s, string t) {int record[26] {0};for(int i 0; i < s.size(); i) {record[s[i] - a];} for(int i 0; i < t.size(); i) {record[t[i] - a]--;}for(int i 0; i <…

SDXL:Improving latent diffusion models for high-resolution image synthesis

文生图模型之SDXL - 知乎之前的文章 文生图模型之Stable Diffusion已经介绍了比较火的文生图模型Stable Diffusion&#xff0c;近期Stability AI又发布了新的升级版本SDXL。目前SDXL的代码、模型以及技术报告已经全部开源&#xff1a;官方代码&#xff1a;https://github.…htt…

灰鸽子远程控制病毒实验

一、实验目的&#xff1a; 1、掌握经典远控木马的原理 2、掌握“灰鸽子”木马的使用方法 二、预备知识&#xff1a; “灰鸽子”是现在网络上非常流行的一种木马&#xff0c;由两部分组成&#xff0c;一是控制端&#xff08;主程序&#xff09;&#xff0c;一是服务端&…

第19集丨Vue 江湖 —— ref属性

目录 一、多个单闭合组件标签二、ref属性三、小技巧 一、多个单闭合组件标签 下面案例中&#xff0c;多个单闭合标签<School/> &#xff0c;如果在非脚手架环境下只会显示第一个&#xff0c;但是在脚手架环境中&#xff0c;都会显示出来。 <template><div id&q…

手写 Mybatis-plus 基础架构(工厂模式+ Jdk 动态代理统一生成代理 Mapper)

这里写目录标题 前言温馨提示手把手带你解析 MapperScan 源码手把手带你解析 MapperScan 源码细节剖析工厂模式Jdk 代理手撕脚手架&#xff0c;复刻 BeanDefinitionRegistryPostProcessor手撕 FactoryBean代理 Mapper 在 Spring 源码中的生成流程手撕 MapperProxyFactory手撕增…

(排序) 剑指 Offer 51. 数组中的逆序对 ——【Leetcode每日一题】

❓剑指 Offer 51. 数组中的逆序对 难度&#xff1a;困难 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 限制&#xff…

测试框架pytest教程(9)自定义命令行-pytest_addoption

pytest_addoption pytest_addoption是pytest插件系统中的一个钩子函数&#xff0c;用于向pytest添加自定义命令行选项。 在pytest中&#xff0c;可以使用命令行选项来控制测试的行为和配置。pytest_addoption钩子函数允许您在运行pytest时添加自定义的命令行选项&#xff0c;…

十、接口(3)

本章概要 接口适配接口字段 初始化接口中的字段 接口嵌套接口和工厂方法模式 接口适配 接口最吸引人的原因之一是相同的接口可以有多个实现。在简单情况下体现在一个方法接受接口作为参数&#xff0c;该接口的实现和传递对象则取决于方法的使用者。 因此&#xff0c;接口的…

Mac发现有的软件不能上网的破解之法

1、Mac上打开终端 terminal &#xff0c;获取 root 权限。 sudo -i 2、编辑 hosts 文件 vim /private/etc/hosts 3、找到被禁止软件的数据请求域名&#xff0c;然后删除相关行&#xff0c;快捷件dd&#xff0c;然后:wq保存退出 比如百度 127.0.0.1 pan.baidu.com ##sec 印…

两个字符串的删除操作——力扣583

class Solution {public:int minDistance(string word1, string word2) {int m = word1.length(), n=word2

内网穿透实战应用-windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

opencv-gpu版本编译(添加java支持,可选)实现硬解码

目录 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取1、准备文件2、复制 NVCUVID 头文件到 cuda 安装目录 include3、安装相关依赖4、 执行cmake5、编译安装6、测试 opencv gpu版本编译&#xff0c;实现硬解码&#xff0c;加速rtsp视频流读取 前置条…

卷积神经网络——上篇【深度学习】【PyTorch】

文章目录 5、卷积神经网络5.1、卷积5.1.1、理论部分5.1.2、代码实现5.1.3、边缘检测 5.2、填充和步幅5.2.1、理论部分5.2.2、代码实现 5.3、多输入多输出通道5.3.1、理论部分5.3.2、代码实现 5.4、池化层 | 汇聚层5.4.1、理论部分5.4.2、代码实现 5、卷积神经网络 5.1、卷积 …

PSP - 基于开源框架 OpenFold 训练的 Finetuning 模型与推理逻辑评估

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132410296 AlphaFold2 以其能够以极高的准确度预测蛋白质结构的能力&#xff0c;彻底改变了结构生物学。然而&#xff0c;AlphaFold2 的实现&…