加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

如何优雅的处理异常?SpringBoot全局异常与数据校验

发布时间:2019-01-29 19:09:39 所属栏目:建站 来源:JAVA柯尼塞克
导读:要思索的题目 在此刻的前后端交互中,凡是都类型了接口返回方法,如返回的接口状态(乐成|失败)以及要返回的数据在谁人字段取,可能说失败了往后提醒信息从接口那边返回,因此,假如想做全局非常,而且非常产生后能精确的返回给前端理会,那么必要非常发
副问题[/!--empirenews.page--]

要思索的题目

在此刻的前后端交互中,凡是都类型了接口返回方法,如返回的接口状态(乐成|失败)以及要返回的数据在谁人字段取,可能说失败了往后提醒信息从接口那边返回,因此,假如想做全局非常,而且非常产生后能精确的返回给前端理会,那么必要非常产生时返回给前端的名目与正常失败场景的名目同等。

项目成立

操作idea 器材,很轻易的搭建一个SpringBoot项目,要引入的maven依靠如下:

  1. <dependency>  
  2.  <groupId>org.springframework.boot</groupId>  
  3.  <artifactId>spring-boot-starter-validation</artifactId>  
  4. </dependency>  
  5. <dependency>  
  6.  <groupId>org.springframework.boot</groupId>  
  7.  <artifactId>spring-boot-starter-web</artifactId>  
  8. </dependency>  
  9. <dependency>  
  10.  <groupId>org.springframework.boot</groupId>  
  11.  <artifactId>spring-boot-starter-test</artifactId>  
  12.  <scope>test</scope>  
  13. </dependency> 

很简朴,除了插手web成果还插手了我们必要用到的JSR-303校验框架。

界说乐成失败 返回码

  1. public class Code {  
  2.  /**  
  3.  * 乐成  
  4.  */  
  5.  public static int SUCCESSED = 1;  
  6.  /**  
  7.  * 失败  
  8.  */  
  9.  public static int FAILED = -1;  

界说接口返反相应实体

  1. public class Response<T> implements Serializable{  
  2.  /**  
  3.  *   
  4.  */  
  5.  private static final long serialVersionUID = 4250719891313555820L;  
  6.  /**  
  7.  * 返回功效集  
  8.  */  
  9.  private T result;  
  10.  /**  
  11.  * 返回动静  
  12.  */  
  13.  private String msg;  
  14.  /**  
  15.  * 相应码  
  16.  */  
  17.  private Integer code;  
  18.  //set get 略  

全局非常拦截和验证

界说自界说营业非常

  1. public class MyException extends RuntimeException {  
  2.  private static final long serialVersionUID = -5875371379845226068L;  
  3.  public MyException(){}  
  4.  public MyException(String msg){  
  5.  this.msg = msg ;  
  6.  }  
  7.  /**  
  8.  * 非常信息  
  9.  */  
  10.  private String msg ;  
  11.  /**  
  12.  * 详细非常码  
  13.  */  
  14.  private int code = Code.FAILED;  
  15.  get set 略  

编写全局非常节制器并对自界说非常做处理赏罚

  1. @ControllerAdvice  
  2. public class GlobalExceptionHandler {  
  3.  private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
  4. @ExceptionHandler(value = MyException.class)  
  5. @ResponseBody  
  6. public Response<String> myExceptionErrorHandler(MyException ex) throws Exception {  
  7.  logger.error("myExceptionErrorHandler info:{}",ex.getMessage());  
  8.  Response<String> r = new Response<>();  
  9.  r.setMsg(ex.getMsg());  
  10.  r.setCode(ex.getCode());  
  11.  return r;  

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读