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

高端网站建设上海网络营销和传统营销的区别有哪些

高端网站建设上海,网络营销和传统营销的区别有哪些,做网站编辑有前途吗,有了阿里云服务器怎么做网站统一异常处理1. 说明2. 问题描述3. 异常处理器使用3.1 创建异常处理器类3.2 让程序抛出异常3.3 测试4. 项目异常处理方案4.1 异常分类4.2 异常解决方案4.3 异常解决方案的具体实现4.4 测试5. 总结1. 说明 \quad本篇文章是在文章SpringMVC:SSM整合(Spring…

统一异常处理

  • 1. 说明
  • 2. 问题描述
  • 3. 异常处理器使用
    • 3.1 创建异常处理器类
    • 3.2 让程序抛出异常
    • 3.3 测试
  • 4. 项目异常处理方案
    • 4.1 异常分类
    • 4.2 异常解决方案
    • 4.3 异常解决方案的具体实现
    • 4.4 测试
  • 5. 总结

1. 说明

\quad本篇文章是在文章SpringMVC:SSM整合(SpringMVC+Spring+Mybatis)案例(9)和SpringMVC:统一封装结果(10)的基础上进行讲解的,建议在读本篇文章之前建议预先了解这两篇文章。

2. 问题描述

前端接收到这个信息后和之前我们约定的格式(统一返回Result类)不一致,这个问题该如何解决?

述

在解决问题之前,我们先来看下异常的种类及出现异常的原因:

  • 框架内部抛出的异常:因使用不合规导致
  • 数据层抛出的异常:因外部服务器故障导致(例如:服务器访问超时)
  • 业务层抛出的异常:因业务逻辑书写错误导致(例如:遍历业务书写操作,导致索引异常等)
  • 表现层抛出的异常:因数据收集、校验等规则导致(例如:不匹配的数据类型间导致异常)
  • 工具类抛出的异常:因工具类书写不严谨不够健壮导致(例如:必要释放的连接长期未释放等)

在开发的任何一个位置都有可能出现异常,而且这些异常是不能避免的。所以我们就得将异常进行处理。

  1. 各个层级均出现异常,异常处理代码书写在哪一层?

    所有的异常均抛出到表现层进行处理

  2. 异常的种类很多,表现层如何将所有的异常都处理到呢?

    异常分类

  3. 表现层处理异常,每个方法中单独书写,代码书写量巨大且意义不强,如何解决?

    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 异常解决方案的具体实现

思路:

  1. 先通过自定义异常,完成BusinessException和SystemException的定义

  2. 将其他异常包装成自定义异常类型

  3. 在异常处理器类中对不同的异常进行处理

步骤一:定义两个异常处理器

自定义系统异常处理器,用于封装异常信息,对异常进行分类

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.ds6.com.cn/news/48796.html

相关文章:

  • 广元网站建设工作室网站页面
  • wordpress文章美化框优化seo可以从以下几个方面进行
  • 用jsp做网站一般会用到什么指数型基金怎么买
  • 做黄色网站的成本小程序怎么开发
  • 伊朗网站开发优秀软文范例800字
  • 广东深圳疫情最新消息通知济南优化网页
  • 大连地图班级优化大师手机版下载(免费)
  • 做湲网站正规推广平台有哪些
  • 开封网站建设培训学校掌门一对一辅导官网
  • 新型冠状病毒seo网站的优化方案
  • 北京网站建设公司大全个人网站该怎么打广告
  • 网站建设公司美工如何找windows优化大师卸载
  • 手机网站开发方案网址搜索引擎入口
  • 学习建设网站开发appseo在线优化
  • 政府新闻网站建设发展过程如何做网页制作
  • 网站备案拍照背景图网站怎么添加外链
  • 餐厅网站建设百度广告服务商
  • 深圳网站建设工作室拉新充场app推广平台
  • 电子商务网站建设步骤有什么武汉网站建设方案优化
  • 能自己做谱子的网站短视频剪辑培训班速成
  • 怎么做网站的seo优化网络营销公司名字
  • 做一样的模板网站会被告侵权吗保定seo建站
  • wordpress添加音频杭州seo网站排名
  • 加工厂网站建设今日要闻 最新热点
  • 网站建设免费视频教程ip营销的概念
  • 怎样推广公司的网站千锋教育培训机构就业率
  • 领动做的网站怎么样能让网络非常流畅的软件
  • 如何做域名网站站长统计app官方网站
  • 阜阳做网站哪家好手机软文广告300字
  • 我是做性视频网站营销策划