| 
                        副标题[/!--empirenews.page--]
                         要思考的问题 
在现在的前后端交互中,通常都规范了接口返回方式,如返回的接口状态(成功|失败)以及要返回的数据在那个字段取,或者说失败了以后提示信息从接口哪里返回,因此,如果想做全局异常,并且异常发生后能准确的返回给前端解析,那么需要异常发生时返回给前端的格式与正常失败场景的格式一致。 
项目建立 
利用idea 工具,很容易的搭建一个SpringBoot项目,要引入的maven依赖如下: 
- <dependency>  
 -  <groupId>org.springframework.boot</groupId>  
 -  <artifactId>spring-boot-starter-validation</artifactId>  
 - </dependency>  
 - <dependency>  
 -  <groupId>org.springframework.boot</groupId>  
 -  <artifactId>spring-boot-starter-web</artifactId>  
 - </dependency>  
 - <dependency>  
 -  <groupId>org.springframework.boot</groupId>  
 -  <artifactId>spring-boot-starter-test</artifactId>  
 -  <scope>test</scope>  
 - </dependency> 
 
  
很简单,除了加入web功能还加入了我们需要用到的JSR-303校验框架。 
定义成功失败 返回码 
- public class Code {  
 -  /**  
 -  * 成功  
 -  */  
 -  public static int SUCCESSED = 1;  
 -  /**  
 -  * 失败  
 -  */  
 -  public static int FAILED = -1;  
 - } 
 
  
定义接口返回响应实体 
- public class Response<T> implements Serializable{  
 -  /**  
 -  *   
 -  */  
 -  private static final long serialVersionUID = 4250719891313555820L;  
 -  /**  
 -  * 返回结果集  
 -  */  
 -  private T result;  
 -  /**  
 -  * 返回消息  
 -  */  
 -  private String msg;  
 -  /**  
 -  * 响应码  
 -  */  
 -  private Integer code;  
 -  //set get 略  
 - } 
 
  
全局异常拦截和验证 
 
定义自定义业务异常 
- public class MyException extends RuntimeException {  
 -  private static final long serialVersionUID = -5875371379845226068L;  
 -  public MyException(){}  
 -  public MyException(String msg){  
 -  this.msg = msg ;  
 -  }  
 -  /**  
 -  * 异常信息  
 -  */  
 -  private String msg ;  
 -  /**  
 -  * 具体异常码  
 -  */  
 -  private int code = Code.FAILED;  
 -  get set 略  
 
  
编写全局异常控制器并对自定义异常做处理 
- @ControllerAdvice  
 - public class GlobalExceptionHandler {  
 -  private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);  
 - @ExceptionHandler(value = MyException.class)  
 - @ResponseBody  
 - public Response<String> myExceptionErrorHandler(MyException ex) throws Exception {  
 -  logger.error("myExceptionErrorHandler info:{}",ex.getMessage());  
 -  Response<String> r = new Response<>();  
 -  r.setMsg(ex.getMsg());  
 -  r.setCode(ex.getCode());  
 -  return r;  
 - } 
 
  
                                                (编辑:我爱故事小小网_铜陵站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |