当前位置: 首页 > news >正文

网站的系统帮助网站程序开发教程

网站的系统帮助,网站程序开发教程,关于对网站建设工作情况的通报,国外手机网站设计一、引言 本篇内容是“异常统一处理”系列文章的重要组成部分#xff0c;主要聚焦于对 BusinessException 的原理解析与异常处理机制#xff0c;并给出测试案例。 关于 全局异常统一处理 的原理和完整实现逻辑#xff0c;请参考文章#xff1a; 《SpringBoot 全局异常统一…一、引言 本篇内容是“异常统一处理”系列文章的重要组成部分主要聚焦于对 BusinessException 的原理解析与异常处理机制并给出测试案例。 关于 全局异常统一处理 的原理和完整实现逻辑请参考文章 《SpringBoot 全局异常统一处理AOPRestControllerAdvice ExceptionHandler ResponseStatus》本文仅详细解析 BusinessException 的异常处理其他类型异常的原理和处理方法请参阅本文所在专栏内的其他文章。 二、业务异常原理 在Java企业级应用开发中BusinessException 是一种常见的自定义异常类型它通常继承自 java.lang.RuntimeException 类。这种异常专门用于表示业务逻辑层 BLL 出现的错误或不符合预期的情况这些情况并不属于系统内部错误但会导致当前业务流程无法正常完成。 由各种业务规则导致的异常情况与系统级别的异常如 IOException、NullPointerException等不同它们是业务逻辑上的错误例如用户输入非法如登录时的用户名密码错误、订单状态非法操作、库存不足无法完成购买等情况。 设计 BusinessException 的主要目的是为了统一处理业务相关的错误并方便异常传播时携带特定的业务上下文信息如错误码、错误消息等。通过抛出 BusinessException开发者可以清晰地区分并优雅地处理那些由应用程序业务规则违反导致的问题而不是因编程错误或系统故障引起的异常。 在实际使用中当业务执行过程中出现错误时如用户输入非法、资源不足、权限不够等情况可抛出此异常并附带相应的错误码和详细错误信息这样上层服务或者全局异常处理器就能根据异常类型和错误码来采取相应的恢复措施比如记录日志、向客户端返回友好的提示信息以及进行事务回滚等操作。 三、业务异常代码 BusinessException package com.example.core.model;import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter;/*** 业务异常*/ Getter Schema(name 业务异常, description 业务异常) public class BusinessException extends RuntimeException {Schema(description 用户提示, example 操作成功)private final String userMessage;/*** 错误码br* 调用成功时为 null。br* 示例10001*/Schema(description 错误码)private final String errorCode;/*** 错误信息br* 调用成功时为 null。br* 示例验证码无效*/Schema(description 错误信息)private final String errorMessage;public BusinessException(ErrorEnum errorEnum) {super(String.format(错误码[%s]错误信息[%s]用户提示[%s], errorEnum.name(), errorEnum.getMessage(), errorEnum.getMessage()));this.userMessage errorEnum.getMessage();this.errorCode errorEnum.name();this.errorMessage errorEnum.getMessage();}public BusinessException(String userMessage, String errorCode, String errorMessage) {super(String.format(错误码[%s]错误信息[%s]用户提示[%s], errorCode, errorMessage, userMessage));this.userMessage userMessage;this.errorCode errorCode;this.errorMessage errorMessage;}}ErrorEnum 下文为错误枚举的代码本代码仅为示例具体的错误枚举类型应该按照公司的开发标准制定。 package com.example.core.model;import lombok.AllArgsConstructor; import lombok.Getter;/*** 错误枚举*/ Getter AllArgsConstructor public enum ErrorEnum {A0001(用户端错误 ), // 一级宏观错误码// ------------------------------------------------------------------------------- //A0100(用户注册错误), // 二级宏观错误码A0101(用户未同意隐私协议),A0102(注册国家或地区受限),A0110(用户名校验失败),A0111(用户名已存在),A0112(用户名包含敏感词),A0113(用户名包含特殊字符),// ------------------------------------------------------------------------------- //A0200(用户登录异常), // 二级宏观错误码A0201(用户账户不存在),A0202(用户账户被冻结),A0203(用户账户已作废),A0210(用户密码错误),A0211(用户输入密码错误次数超限),// ------------------------------------------------------------------------------- //A0400(用户请求参数错误), // 二级宏观错误码A0420(请求参数值超出允许的范围),A0421(参数格式不匹配),A0422(地址不在服务范),A0423(时间不在服务范围),A0424(金额超出限制),A0425(数量超出限制),A0426(请求批量处理总个数超出限制),A0427(请求 JSON 解析失败);private final String message;} 四、异常处理代码 在Spring Boot应用中我们可以通过使用ExceptionHandler注解来捕获并处理BusinessException异常。 4.1 异常处理示意图 4.2 异常处理核心代码 package com.example.core.advice;import com.example.core.model.BusinessException; import com.example.core.model.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.HandlerMethod;/*** 全局异常处理器*/ Slf4j RestControllerAdvice public class GlobalExceptionHandler {/*** 业务异常处理*/ExceptionHandlerResponseStatus(HttpStatus.BAD_REQUEST)public ResultVoid handle(BusinessException e, HandlerMethod handlerMethod) {// BusinessException自定义业务异常的处理逻辑比如记录日志等逻辑。return Result.fail(e.getUserMessage(), e.getErrorCode(), e.getErrorMessage());}} 上述代码中当出现BusinessException异常时系统将返回一个状态码为400Bad Request的结果并附带具体的错误信息。 五、测试案例 5.1 测试代码 GetMapping(business_exception)Operation(summary 业务异常, description 测试 “业务异常”直接将业务异常抛出由 “异常统一处理” 模块来进行处理将错误信息返回给前端。)public void throwBusinessException() {throw new BusinessException(ErrorEnum.A0210);}5.2 未处理异常时的报错 请求响应 控制台的错误日志 5.3 已处理异常时的响应
http://www.zqtcl.cn/news/399763/

相关文章:

  • 国外做的好看的网站设计网络营销推广方案怎么做
  • 网站建站业务wordpress网站域名地址
  • 烟台网站制作这做菠菜网站
  • 网站建设vr百度站长
  • 织梦网站广告代码如何写网页设计你若安好便是晴天作业
  • 网站建设 上海wordpress 知更鸟 公告
  • 建小说网站需要多少钱罗湖区住房和建设网站
  • 湖南专业网站建设服务做网站的底图尺寸多大
  • 山东省住房与建设厅网站首页有名的wordpress主题商
  • 常州市金坛区网站建设毕业设计代做淘宝好还是网站好
  • 品牌网站建设营销型网站设计网站整合方案
  • 网站开发设计师网站代理什么意思
  • 网站层级关系邯郸品牌商标vi设计策划公司
  • 网站开发产品需求说明小网站代码
  • 苏州网站推广排名网站建设方案范文8篇
  • 自己做考试题目网站广州番禺区美食攻略
  • 广州做网站如何如何制作一个网页
  • 网站定制开发收费标准是多少网站代码优化方案
  • 制作卡牌的网站深圳正规煤气公司
  • 手表网站哪家好网站用图片
  • 群辉nas 做网站wordpress linux 中文
  • 平面设计素材网站排名巩义网站建设方案表
  • 延庆网站制作搜索引擎优化的基础是什么
  • 管理手机网站商城网站备案流程
  • 怀化买房网站网站广告js代码添加
  • 做网站 帮别人卖服务器wordpress主题多页面
  • 代理游戏网站潍坊市建设工程管理处网站
  • 大同推广型网站建设网站规划建设与管理维护第二版答案
  • 做网站需要代码吗户外媒体网站建设免费
  • 做什么网站国外做图标网站