一.返回code数据的处理

代码:

Result.java
 /**
* http请求返回的最外层对象
* Created by 廖师兄
* 2017-01-21 13:34
*/
public class Result<T> { /** 错误码. */
private Integer code; /** 提示信息. */
private String msg; /** 具体的内容. */
private T data; public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public T getData() {
return data;
} public void setData(T data) {
this.data = data;
}
}

ResultUtil .java

public class ResultUtil {

    public static Result success(Object object) {
Result result = new Result();
result.setCode();
result.setMsg("成功");
result.setData(object);
return result;
} public static Result success() {
return success(null);
} public static Result error(Integer code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
@Entity
public class Gril {
@Id
@GeneratedValue
@NotNull(message = "这个id必传")
private Integer id; public Integer getId(Integer id) {
return this.id;
} public void setId(Integer id) {
this.id = id;
}
}

使用:

@RestController
public class GrilController {
//添加女生
@PostMapping(value = "/grils/{id}")
public Result<Gril> grilAdd(@Valid Gril gril, BindingResult bindingResult){ if(bindingResult.hasErrors())
{
//这个是把gril里面的这个id必传返回给前端
return ResultUtil.error(,bindingResult.getFieldError().getDefaultMessage());
} return ResultUtil.success(grilpepository.save(gril));
}

访问http://127.0.0.1:8081/grils

返回

{
"code": ,
"msg": "这个id必传",
"data": null
}

访问http://127.0.0.1:8081/grils/2

返回

  {
"id":
}

二:统一异常处理

public class GrilException extends RuntimeException{
private Integer code; public GrilException(Integer code,String message) {
super(message);
this.code = code();
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
}
}
@ControllerAdvice
public class ExceptionHandle {
private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result Handle(Exception e){ if (e instanceof GrilException){
GrilException grilException = (GrilException) e;
return ResultUtil.error(grilException.getCode(),grilException.getMessage()); }else {
      //将系统异常以打印出来
logger.info("[系统异常]{}",e);
return ResultUtil.error(-,"未知错误");
} }
}

使用:

@Service
public class GirlService {
public void getAge(Integer id) throws Exception{
Girl girl = girlRepository.findOne(id);
Integer age = girl.getAge();
if (age < ) {
//返回"你还在上小学吧" code=100
throw new GirlException(100,"你还在上小学吧");
}else if (age > && age < ) {
//返回"你可能在上初中" code=101
throw new GirlException(101,"你可能在上初中" );
} }
}
@RestController
public class GirlController { @Autowired
private GirlService girlService;
@GetMapping(value = "girls/getAge/{id}")
public void getAge(@PathVariable("id") Integer id) throws Exception{
girlService.getAge(id);
}
}

执行结果为:

三:异常是统一维护:

public class GirlException extends RuntimeException{

    private Integer code;

    public GirlException(ResultEnum resultEnum) {
super(resultEnum.getMsg());
this.code = resultEnum.getCode();
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
}
}
@ControllerAdvice
public class ExceptionHandle { private final static Logger logger = LoggerFactory.getLogger(ExceptionHandle.class); @ExceptionHandler(value = Exception.class)
@ResponseBody
public Result handle(Exception e) {
if (e instanceof GirlException) {
GirlException girlException = (GirlException) e;
return ResultUtil.error(girlException.getCode(), girlException.getMessage());
}else {
logger.error("【系统异常】{}", e);
return ResultUtil.error(-, "未知错误");
}
}
}

这个就是统一维护的文件,采用枚举

public enum ResultEnum {
UNKONW_ERROR(-, "未知错误"),
SUCCESS(, "成功"),
PRIMARY_SCHOOL(, "我猜你可能还在上小学"),
MIDDLE_SCHOOL(, "你可能在上初中"), ; private Integer code; private String msg; ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
} public Integer getCode() {
return code;
} public String getMsg() {
return msg;
}
}

使用:

@Service
public class GirlService { @Autowired
private GirlRepository girlRepository; public void getAge(Integer id) throws Exception{
Girl girl = girlRepository.findOne(id);
Integer age = girl.getAge();
if (age < ) {
//返回"你还在上小学吧" code=100
throw new GirlException(ResultEnum.PRIMARY_SCHOOL);
}else if (age > && age < ) {
//返回"你可能在上初中" code=101
throw new GirlException(ResultEnum.MIDDLE_SCHOOL);
} //如果>16岁,加钱
//...
}
}
@RestController
public class GirlController { @Autowired
private GirlService girlService; @GetMapping(value = "girls/getAge/{id}")
public void getAge(@PathVariable("id") Integer id) throws Exception{
girlService.getAge(id);
}

springboot统一异常处理及返回数据的处理的更多相关文章

  1. spring 或 springboot统一异常处理

    spring 或 springboot统一异常处理https://blog.csdn.net/xzmeasy/article/details/76150370 一,本文介绍spring MVC的自定义 ...

  2. SpringBoot 统一异常处理

    统一异常处理: @ControllerAdvice public class GlobalExceptionHandler { private Logger logger = LoggerFactor ...

  3. SpringBoot统一异常处理后TX-LCN分布式事务无法捕获异常进行回滚

    通常我们使用SpringBoot都会进行统一异常处理,例如写一个BaseController,在BaseController里进行统一异常处理,然后其他的Controller都继承BaseContro ...

  4. springboot统一异常处理类及注解参数为数组的写法

    统一异常处理类 package com.wdcloud.categoryserver.common.exception; import com.wdcloud.categoryserver.commo ...

  5. ASP.NET Core 统一异常处理和返回

    业务场景: 业务需求要求,需要对 ASP.NET Core 异常进行统一处理和返回,比如出现 500 错误和业务服务错误进行不同的处理和返回. 具体实现: using Microsoft.AspNet ...

  6. SpringBoot统一异常处理

    /** * 异常处理器 */ @RestControllerAdvice // public class BDExceptionHandler { private Logger logger = Lo ...

  7. Springboot统一异常处理(@ControllerAdvice)

    import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind ...

  8. spring boot 2 全局统一返回RESTful风格数据、统一异常处理

    全局统一返回RESTful风格数据,主要是实现ResponseBodyAdvice接口的方法,对返回值在输出之前进行修改.使用注解@RestControllerAdvice拦截异常并统一处理. 开发环 ...

  9. springboot返回统一接口与统一异常处理

    springboot返回统一接口与统一异常处理 编写人员:yls 编写时间:2019-9-19 0001-springboot返回统一接口与统一异常处理 简介 创建统一的返回格式 Result 封装统 ...

随机推荐

  1. ansible(2)

    一.ansible模块(yum.pip.service.conr.user.group) 上篇中我们已经学了ansible的几个模块,接下来再来学习几个,那么你是否知道ansible一共有多少模块呢? ...

  2. git提交到远程虚拟机

    git到自己的虚拟机中第一步:打通git(一)Linux中(ip为10.1.8.1)1.安装git如:Ubuntu中安装gitapt install git 2.Ubuntu中添加git用户sudo ...

  3. 004-集成maven和Spring boot的profile功能打包

    参考地址:https://blog.csdn.net/lihe2008125/article/details/50443491 一.主要目标 1.通过mvn在命令行中打包时,可以指定相应的profil ...

  4. Appium-Java滑动操作

    Java滑动操作,通常可以直接使用API中AndroidDriver类中的swipe方法,直接进行调用 swipe(int startx, int starty, int endx, int endy ...

  5. git 更新某个文件

    1.拉取某个仓库的某个文件 git fetch git checkout origin/master test.php

  6. Dictionary 初始化数据

    Dictionary<string, string> dic = new Dictionary<string, string>() {                    { ...

  7. [笔记]Delphi 2007写DLL供VC调用实例

    考虑如下几种常用情况: - VC传入int,返回int- VC传入char *,返回int- VC传入char *,返回char *及int 为简化问题,传递的字符串参数只考虑ANSI格式,不考虑UN ...

  8. XDU 1109

    #include<stdio.h> #define N 10007 #define maxn 1000005 int dp[maxn]; int main() { dp[]=,dp[]=, ...

  9. JForum的运行环境

    JForum的运行环境: 开始本文之前,我们确认一下JForum的运行环境. - Java动态运行环境(JRE) - 支持J2EE Servlet标准的任何一款Web服务器:Tomcat,JBoss, ...

  10. nodejs做中间层,向后端取数据

    var  http=require('http'): http.get('http://baidu/dksapi/weiboLive/GetSquareLive?pagecount=1&pag ...