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

宣城市建设银行网站盐城市建设局网站打不开

宣城市建设银行网站,盐城市建设局网站打不开,优化 网站访问速度,电子商务平台建设内容项目中的异常处理 规范异常类型 在Service类的业务方法中有很多的参数合法性校验,当请求参数不合法的时候会抛出异常,但此时异常信息只会在控制台输出,前端界面并不会提示用户 实际开发中前端和后端需要做一些约定: 一般将错误提示信息统一以json格式返回给前端,以HTTP状态码…项目中的异常处理 规范异常类型 在Service类的业务方法中有很多的参数合法性校验,当请求参数不合法的时候会抛出异常,但此时异常信息只会在控制台输出,前端界面并不会提示用户 实际开发中前端和后端需要做一些约定: 一般将错误提示信息统一以json格式返回给前端,以HTTP状态码决定当前请求是否出错(非200为操作异常) {timestamp:2023-02-02T14:42:36.82000:00,// 添加课程时设置一个负数的课程价格会报500异常status:500,error:Internal Server Error,message:,path:/content/course }为了统一处理异常信息,我们需要在业务方法中自定义并规范项目中抛出的异常类型,这样可以便于统一去捕获这一类或几类的异常 对于业务方法中抛出的非项目自定义的异常类型即未知异常,则统一向用户提示指定的错误信息如执行过程异常请重试的 规范了异常类型, 我们还需要去捕获异常信息,使用try/catch方式去捕获代码比较臃肿,可以统一由SpringMVC提供的控制器增强类去完成异常的捕获 异常处理(base工程) 第一步: 添加依赖,在base基础工程实现统一异常处理,由于各模块依赖了base基础工程所以都可以使用异常处理 dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactId /dependency dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId /dependency第二步: 定义一个枚举类CommonError,枚举一些通用的异常信息对象 package com.xuecheng.base.execption; /** * description 通用错误信息 */ public enum CommonError {UNKOWN_ERROR(执行过程异常请重试),PARAS_ERROR(非法参数),OBJECT_NULL(对象为空),QUERY_NULL(查询结果为空),REQUEST_NULL(请求参数为空);private String errMessage;public String getErrMessage() {return errMessage;}CommonError(String errMessage) {this.errMessage errMessage;} }第三步: 自定义项目的异常类型XueChengPlusException package com.xuecheng.base.execption; /** * description 学成在线项目异常类 */ public class XueChengPlusException extends RuntimeException {private String errMessage;public String getErrMessage() {return errMessage;}public XueChengPlusException() {super();}public XueChengPlusException(String errMessage) {super(errMessage);this.errMessage errMessage;}public static void cast(CommonError commonError) {throw new XueChengPlusException(commonError.getErrMessage());}public static void cast(String errMessage) {throw new XueChengPlusException(errMessage);} }第四步: 自定义响应异常信息的模型类 package com.xuecheng.base.execption; Data NoArgsConstructor AllArgsConstructor public class RestErrorResponse implements Serializable {private String errMessage; }第五步: 定义全局异常处理器去捕获异常信息同时记录异常日志, 将异常信息封装到异常信息的模型类并响应给用户,实现微服务端全局异常处理 ControllerAdvice或RestControllerAdvice)(类上): 将当前类标识为异常处理的组件ExceptionHandler(方法或类上): 用于表明方法处理的异常类型,可以指定一个或多个ResponseStatus(方法或类上): 标记捕获异常的方法或类指定发生异常时异常处理器向前端响应的状态码和原因 package com.xuecheng.base.execption; /** * description 全局异常处理器 */ Slf4j ControllerAdvice public class GlobalExceptionHandler {ResponseBodyExceptionHandler(XueChengPlusException.class)// 处理项目自定义异常类型ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // 该异常枚举对象的错误码为500public RestErrorResponse customException(XueChengPlusException exception) {log.error(系统异常{}, exception.getErrMessage());return new RestErrorResponse(exception.getErrMessage());}ResponseBodyExceptionHandler(Exception.class)// 未知类型的异常ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)// 该异常枚举对象的错误码为500public RestErrorResponse exception(Exception exception) {log.error(系统异常{}, exception.getMessage());return new RestErrorResponse(exception.getMessage());} }异常处理测试(api工程) 第一步: 在内容管理服务的api工程中添加base工程的依赖 dependencygroupIdcom.xuecheng/groupIdartifactIdxuecheng-plus-base/artifactIdversion0.0.1-SNAPSHOT/version /dependency第二步: 当业务方法中出现异常时抛出项目自定义的异常类型,这里以新增课程的业务方法为例进行代码修改 Override public CourseBaseInfoDto createCourseBase(Long companyId,AddCourseDto dto) {//合法性校验if (StringUtils.isBlank(dto.getName())) {throw new XueChengPlusException(课程名称为空);}if (StringUtils.isBlank(dto.getMt())) {throw new XueChengPlusException(课程分类为空);}if (StringUtils.isBlank(dto.getSt())) {throw new XueChengPlusException(课程分类为空);}if (StringUtils.isBlank(dto.getGrade())) {throw new XueChengPlusException(课程等级为空);}if (StringUtils.isBlank(dto.getTeachmode())) {throw new XueChengPlusException(教育模式为空);}if (StringUtils.isBlank(dto.getUsers())) {throw new XueChengPlusException(适应人群);} if (StringUtils.isBlank(dto.getCharge())) {throw new XueChengPlusException(收费规则为空);}if(charge.equals(201001)){if(courseMarketNew.getPrice() null || courseMarketNew.getPrice().floatValue()0){throw new XueChengPlusException(课程的价格不能为空并且必须大于0);}} }第三步: 使用HTTP Client进行测试,故意将收费课程价格设置为负数, 查看捕获到的响应信息 POST http://localhost:53040/content/courseHTTP/1.1 500 Content-Type: application/json Transfer-Encoding: chunked Date: Fri, 03 Feb 2023 02:32:20 GMT Connection: close{errMessage: 课程设置了收费价格不能为空且必须大于0 }
http://www.sadfv.cn/news/126874/

相关文章:

  • 建设邮箱网站WordPress的黑色
  • 手机网站 生成app上线了建站怎么收费
  • 河南省住房和建设厅门户网站电商主要是做什么工作
  • 平台网站模板wordpress 百度云图安装
  • 我的世界服务器赞助网站怎么做什么叫子网站
  • 互助网站制作公司如何建设cf提卡网站
  • w3school网站建设教程如何建设好营销网站
  • 查工作单位的网站打游戏一天赚200元
  • 临沂网站制作培训八里河风景区网站建设内容摘要
  • 建立网站需要钱吗共享的网站备案
  • 阅读网站建设规划书工程建设比选公告固价方式网站
  • 网站页面设计优化方案摄影网站在线建设
  • 视频制作网站推荐成都网络优化网站
  • 国内室内设计网站大全百度seo点击排名优化
  • 2003总是说网站建设中wordpress 自豪地采用wordpress
  • 数码港 太原网站开发公司定制网站建设功能报价表模板
  • 网站制作什么小型广告公司简介模板
  • 海报素材网站推荐在线A视频做爰网站
  • 创意互动 网站建设电商网络推广怎么做
  • 网站在线服务网站集约化建设的好处
  • 宜宾网站优化营销网站制作信ls15227
  • 免费网站大全app优化是什么梗 棍勇
  • 瑞金网站建设推广网站收录很好没排名
  • 石家庄模板建站系统设计教程
  • 珠海医疗网站建设加快网站打开速度
  • 东莞搜索seo优化排名seo优化团队
  • 怎么制作钓鱼网站链接怎么做手机版网站
  • 设计网站多少钱wordpress做导航插件
  • 广东专业移动网站建设哪家好响应式门户网站
  • 网站前端开发框架网站建设所需物资