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

自助建站免费建站wordpress 存档过多

自助建站免费建站,wordpress 存档过多,wordpress后台访问慢,网络营销工具中在这个前后端分离的时代,一个 统一的数据格式非常重要。本次我们实现用spring boot实现一下返回给前端数据的统一格式,不再出现服务器500的错误。 新建一个spring boot项目,并导入knife4j的依赖。 写一个controller控制器,用来是…

在这个前后端分离的时代,一个 统一的数据格式非常重要。本次我们实现用spring boot实现一下返回给前端数据的统一格式,不再出现服务器500的错误。

新建一个spring boot项目,并导入knife4j的依赖。

写一个controller控制器,用来是实现测试http的请求

@RestController
public class TestController {@GetMapping("/test")
public  String test(){
int i=1/0;return "一个test测试请求";
}
}

发送请求测试:

异常的统一主要依赖于两个注解:
@ControllerAdvice:

Controller增强器,给controller层增加统一的操作和处理

@ExceptionHander

捕获controller抛出的异常,并进行处理;

自定义异常处理:

1、自定义一个类Result,用来实现返回给前端的统一格式:
 

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> implements Serializable {private static final long serialVersionUID = 1L;
private Integer code;
private String message;
private T data;
}

2、创建一个类ResultException,继承RuntimeException异常

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultException extends RuntimeException{private Integer code;private String message;
}

3、创建一个VoResultException 类,用来实现具体的逻辑:

@RestControllerAdvice
public class VoResultException {//    自定义异常处理类
@ExceptionHandler(ResultException.class)
public Result errorResult(ResultException resultException){
return new Result(resultException.getCode(),resultException.getMessage(),null);
}}

@RestControllerAdvice注解是@ControllerAdvice和@ResponseBody注解的结合,标识返回的数据是json类型

至此,我们就实现了全部的工作。现在,在你想要抛出异常的地方直接使用即可(直接抛出ResultException异常)

@GetMapping("/test")
public  String test(){throw new ResultException(10001,"测试异常");}

发送请求测试:

可以返回了统一的数据,但是这个异常是我们自定义的。所以不能处理程序中的错误

如下图这个错误:

@GetMapping("/test")
public  String test(){int i=1/0;throw new ResultException(10001,"测试异常");}

测试请求:

由于这个异常是在程序运行中出现的,属于RunException异常,我们自定义的异常不能够捕获到。      这时,我们可以在自定义的异常处理器VoResultException类中再加入全局异常处理器。

如下所示:

@RestControllerAdvice
public class VoResultException {
//    自定义异常处理类
@ExceptionHandler(ResultException.class)
public Result errorResult(ResultException resultException){
return new Result(resultException.getCode(),resultException.getMessage(),null);
}//全局异常处理类@ExceptionHandler(Exception.class)public Result error(Exception e){return new Result(1001,e.getMessage(),null);}}

加入了全局异常处理时,抛出的RunException异常就可以自动捕获了。

小插曲:

@ExceptionHandler(ResultException.class)注解里面是要捕获的异常的类型,下面的方法参数中也一定要传入与这个类型一样的类队象  或者   满足继承关系(这一点是非常重要的,不然它不能自动捕获异常)

因为有人还是搞不懂,这个关系,私下里问我。我再一次修改了,这一次更加详细:

在使用 @ExceptionHandler 注解时,注解中的类对象并不一定要与方法参数的对象类型完全一样,但是要满足以下条件:

  1. 类对象必须是方法参数对象的父类或接口。这意味着注解中的类对象可以是方法参数对象的超类、接口或实现类。

  2. 类对象不能是方法参数对象的子类。如果注解中的类对象是方法参数对象的子类,那么该注解将不会匹配到该方法,而是匹配到更具体的子类处理方法(如果有定义)。

我们再发一次请求:

可以看到by zero这个异常被自动捕获了。

我们在正常的后端开发中也是这样搞得:

一般我们定义两个@ExceptionHandler。

一个是自定义异常,用来在项目中抛出我们自定义的异常(由于这个自定义的异常是继承RunException得来的,所以不能处理项目在运行时的异常,只能手动抛出,也就是我们已经预先知道的异常)

一个是全局异常,用来捕获我们在项目中遇到的其他异常。可以这样说,除了我们手动抛出的自定义异常,其他的都需要全局异常来捕获并抛出。但是全局异常的表达并不能像我们自定义的异常一样清晰,这个是虚拟机自动抛出的。

http://www.yayakq.cn/news/759477/

相关文章:

  • 电脑建站软件无锡微网站制作
  • 山东省职业能力建设处网站企业网站模板源码资源下载
  • wordpress删除登录广州seo关键字推广
  • 企业网站注册申请东莞百度推广优化公司
  • 苏州市城乡和建设局网站个人网站设计案例
  • 网站seo批量查询工具wordpress自动保存编辑器图片
  • 网站建设留言板怎么做网站建设手机站
  • 公司做网站推广有效果吗免费网站建设公司
  • 怎么用手机做刷会员网站网站域名备案服务
  • 运营网站开发工作招聘wordpress登录慢
  • 汕头企业制作网站汉中网站建设费用
  • 做电脑网站用什么软件有哪些vs2017做的网站
  • 有什么做节能报告的网站天津自助建站软件
  • 宁波北仑做公司网站建立公司企业网站
  • 一个网站两个域名备案动易cms网站后台很慢是什么原因
  • 台州做网站app的公司微网页制作模板
  • 系统管理的主要内容搜索引擎优化的基本手段
  • 大连网站建设动态从手机上可以做网站吗
  • 网站建设氺金手指排名15cms门户网站模板下载
  • 网站开发后台能用c语言吗深圳纯手工seo
  • 企业怎么做网站做网站的公司做的好的地方网站
  • 建酒店网站网站收录情况查询
  • 开通招聘网站如何做分录上海招标网站
  • 部队网站建设多少钱网络推广公司名字大全
  • seo站内优化最主要的是什么网站建设服务宗旨
  • 新手学网站建设看什么书好百度推广登录平台app
  • asp技术网站开发案例互联网创业就是做网站吗
  • 纳雍网站建设公司建设网站如何优化关键词
  • 国外字体设计网站网站制作服务合同
  • 有没有专业做网站架构图的软件做公司网站 需要注意什么