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

福建住房和城乡建设局网站做私人小网站赚钱吗

福建住房和城乡建设局网站,做私人小网站赚钱吗,网站流量如何做,面对撞库 网站应该怎么做统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVC#xff1a;SSM整合#xff08;Spring… 统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVCSSM整合SpringMVCSpringMybatis案例9和SpringMVC统一封装结果10的基础上进行讲解的建议在读本篇文章之前建议预先了解这两篇文章。 2. 问题描述 前端接收到这个信息后和之前我们约定的格式(统一返回Result类)不一致这个问题该如何解决? 在解决问题之前我们先来看下异常的种类及出现异常的原因: 框架内部抛出的异常因使用不合规导致数据层抛出的异常因外部服务器故障导致例如服务器访问超时业务层抛出的异常因业务逻辑书写错误导致例如遍历业务书写操作导致索引异常等表现层抛出的异常因数据收集、校验等规则导致例如不匹配的数据类型间导致异常工具类抛出的异常因工具类书写不严谨不够健壮导致例如必要释放的连接长期未释放等 在开发的任何一个位置都有可能出现异常而且这些异常是不能避免的。所以我们就得将异常进行处理。 各个层级均出现异常异常处理代码书写在哪一层? 所有的异常均抛出到表现层进行处理 异常的种类很多表现层如何将所有的异常都处理到呢? 异常分类 表现层处理异常每个方法中单独书写代码书写量巨大且意义不强如何解决? AOP 3. 异常处理器使用 3.1 创建异常处理器类 在controller层下创建异常处理器类 // RestControllerAdvice用于标识当前类为REST风格对应的异常处理器 // ControllerAdvice用于标识当前类为普通风格对应的异常处理器 RestControllerAdvice public class ProjectExceptionAdvice {// 除了自定义的异常处理器保留对Exception类型的异常处理用于处理非预期的异常ExceptionHandler(Exception.class)public void doException(Exception ex){System.out.println(出现异常。)} }3.2 让程序抛出异常 修改BookController的getById方法添加int i 1/0. GetMapping(/{id}) public Result getById(PathVariable Integer id) {int i 1/0;Book book bookService.getById(id);Integer code book ! null ? Code.GET_OK : Code.GET_ERR;String msg book ! null ? : 数据查询失败请重试;return new Result(code,book,msg); }3.3 测试 说明异常已经被拦截并执行了doException方法。 4. 项目异常处理方案 4.1 异常分类 因为异常的种类有很多如果每一个异常都对应一个ExceptionHandler那得写多少个方法来处理各自的异常所以我们在处理异常之前需要对异常进行一个分类: 业务异常BusinessException 规范的用户行为产生的异常 用户在页面输入内容的时候未按照指定格式进行数据填写如在年龄框输入的是字符串 不规范的用户行为操作产生的异常 如用户故意传递错误数据 系统异常SystemException 项目运行过程中可预计但无法避免的异常 比如数据库或服务器宕机 其他异常Exception 编程人员未预期到的异常如:用到的文件不存在 将异常分类以后针对不同类型的异常要提供具体的解决方案: 4.2 异常解决方案 业务异常BusinessException 发送对应消息传递给用户提醒规范操作 大家常见的就是提示用户名已存在或密码格式不正确等 系统异常SystemException 发送固定消息传递给用户安抚用户 系统繁忙请稍后再试系统正在维护升级请稍后再试系统出问题请联系系统管理员等 发送特定消息给运维人员提醒维护 可以发送短信、邮箱或者是公司内部通信软件 记录日志 发消息和记录日志对用户来说是不可见的属于后台程序 其他异常Exception 发送固定消息传递给用户安抚用户发送特定消息给编程人员提醒维护纳入预期范围内 一般是程序没有考虑全比如未做非空校验等 记录日志 4.3 异常解决方案的具体实现 思路: 先通过自定义异常完成BusinessException和SystemException的定义 将其他异常包装成自定义异常类型 在异常处理器类中对不同的异常进行处理 步骤一定义两个异常处理器 自定义系统异常处理器用于封装异常信息对异常进行分类 public class SystemException extends RuntimeException{private Integer code;public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public SystemException(Integer code, String message) {super(message);this.code code;}public SystemException(Integer code, String message, Throwable cause) {super(message, cause);this.code code;}}自定义业务异常处理器用于封装异常信息对异常进行分类 public class BusinessException extends RuntimeException{private Integer code;public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public BusinessException(Integer code, String message) {super(message);this.code code;}public BusinessException(Integer code, String message, Throwable cause) {super(message, cause);this.code code;} }说明: 让自定义异常类继承RuntimeException的好处是后期在抛出这两个异常的时候就不用在try…catch…或throws了自定义异常类中添加code属性的原因是为了更好的区分异常是来自哪个业务的 步骤2将其他异常包成自定义异常 public Book getById(Integer id) {//模拟业务异常包装成自定义异常if(id 15){throw new BusinessException(Code.BUSINESS_ERR,业务层出现异常);}//模拟系统异常将可能出现的异常进行包装转换成自定义异常try{int i 1/0;}catch (Exception e){throw new SystemException(Code.SYSTEM_TIMEOUT_ERR,服务器访问超时请重试!,e);}return bookDao.getById(id); }状态码Code类 // 状态码 public class Code {public static final Integer SAVE_OK 20011;public static final Integer SAVE_ERR 20010;public static final Integer DELETE_OK 20021;public static final Integer DELETE_ERR 20020;public static final Integer UPDATE_OK 20031;public static final Integer UPDATE_ERR 20030;public static final Integer GET_OK 20041;public static final Integer GET_ERR 20040;public static final Integer SYSTEM_ERR 50001;public static final Integer SYSTEM_TIMEOUT_ERR 60001;public static final Integer SYSTEM_UNKNOW_ERR 70001;public static final Integer BUSINESS_ERR 80001;}步骤3处理器类中处理自定义异常 package com.itheima.controller;import com.itheima.exception.BusinessException; import com.itheima.exception.SystemException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*** Author Mr.Lu* Date 2023/2/11 9:36* ClassName ProjectExceptionAdvice* Version 1.0*/ // RestControllerAdvice用于标识当前类为REST风格对应的异常处理器 RestControllerAdvice public class ProjectExceptionAdvice {ExceptionHandler(BusinessException.class)public Result doBusinessException(BusinessException ex){return new Result(ex.getCode(), null, ex.getMessage());}ExceptionHandler(SystemException.class)public Result doSystemException(SystemException ex){// 记录日志// 发送消息给运维// 发送邮件给开发人员,ex对象发送给开发人员return new Result(ex.getCode(), null, ex.getMessage());}// 除了自定义的异常处理器保留对Exception类型的异常处理用于处理非预期的异常ExceptionHandler(Exception.class)public Result doOtherException(Exception ex){//记录日志//发送消息给运维//发送邮件给开发人员,ex对象发送给开发人员return new Result(8888,null, 系统繁忙请稍后再试);} } 4.4 测试 根据ID查询如果传入的参数为15会报BusinessException 如果传入的是其他参数会报SystemException 5. 总结 项目中的异常处理方式
http://www.w-s-a.com/news/940005/

相关文章:

  • 物流的网站模板wordpress网站 800cdn
  • 建站公司合肥做精品课程网站需要啥素材
  • 成都三合一网站建设网站建设教程自学网
  • 门户网站跳出率wordpress火车头采集教程
  • 天津做网站的网络公司wordpress免费的模板
  • 有哪些关于校园内网站建设的法律如何申请免费网站空间
  • 玉溪市网站建设龙口网页定制
  • 网站开发都用什么软件上海景观设计公司10强
  • 网站建设氵金手指下拉十二深圳网站建设售后服务
  • 上海网站设计价青海企业网站制作
  • 静态网站做新闻系统深圳外贸网站建设哪家好
  • 网站如何做词360免费wifi老是掉线怎么办
  • 网站建设分金手指排名十八iis10 wordpress
  • 成都网站优化公司哪家好网站建设帮助中心
  • 做外单什么网站好佛山市建设企业网站服务机构
  • 哪些网站是单页面应用程序北京门头沟山洪暴发
  • 织梦(dedecms)怎么修改后台网站默认"织梦内容管理系统"标题关键词优化收费标准
  • 网站设计和备案企业官网网站建设免费
  • 公司概况-环保公司网站模板搜索引擎营销的基本流程
  • 门户网站建设经验天津市建设银行租房网站
  • 百度推广 帮做网站吗怎样修改网站的主页内容
  • 网站怎么做dns解析公司官网改版方案
  • 湛江市住房和城乡建设局网站杭州网站公司哪家服务好
  • 设计网站公司湖南岚鸿设计镜像的网站怎么做排名
  • 你注册过哪些网站微信app下载安装官方版2019
  • 杭州滨江的网站建设公司人才招聘网网站策划方案
  • 门户网站是指提供什么的网站网站优化需要工具
  • 和小男生做的网站代理公司注册步骤
  • 天猫网站建设的目标是什么seo有些什么关键词
  • 网站前端建设都需要什么莱芜信息港网页