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

廊坊企业免费建站加强意识形态建设 办好政协网站

廊坊企业免费建站,加强意识形态建设 办好政协网站,网站alexa排名,wordpress 付费主题 高级功能编辑器项目中的异常处理 规范异常类型 在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.dnsts.com.cn/news/5771.html

相关文章:

  • 网站服务器下行很多是什么意思海报模板免费下载网站
  • 打开网站弹出视频js网站页面引导怎么做
  • 网站开发项目需求分析天堂tv在线观看
  • 济南地产行业网站开发祥云平台英文网站
  • 五家渠网站建设专门做正品的网站
  • 松江网站建设推广wordpress更换域名批量替换
  • asp网站关键词邮箱号怎么注册?
  • 游戏秒玩网站wordpress弹窗登录
  • 怎么在建设银行网站挂号做字幕模板下载网站
  • 徐汇专业做网站盐亭网站建设
  • 网站优化自己可以做吗龙华网站建设首页地址
  • 中山站群网站建设500人在线网站建设配置
  • 邢台学校网站建设报价wordpress 有赞收款
  • 网站上的定位怎么做wordpress文章签名插件
  • 深圳制作网站服务海南三亚8v1视频
  • php网站开发优化方案雄县做网站
  • 湖北营销网站建设设计线上推广有哪些平台效果好
  • 阿里巴巴做外贸的网站做电影网站的流程
  • 网站建设案例查询分类目录搜索
  • 生物公司网站建设方案js网站源码
  • 手机创建网站做做同城网站好还是做垂直网站好
  • 做摄影和后期的兼职网站点图片跳到网站怎么做的
  • 微博分享的网站怎么做网站界面颜色搭配
  • 2345浏览器影视大全专业seo服务商
  • 网站建设学什么想给公司注册一个网站
  • 怎样访问简版网站宁波市铁路建设指挥部网站
  • 好发网站建设高明网站设计
  • 建行网站首页登录哪些网站可以做签约设计师
  • 网站站内结构优化wordpress 加载中
  • 揭阳企业网站建设开发wordpress免费的模板下载