Spring Boot 捕捉全局异常 统一返回值

:2020年06月19日 java1234
分享到:

在前后端分离的情况下,我们经常会定义一个统一的反回数据格式,通常都会包含状态码,返回信息,返回的数据,是否成功等参数。1、ResultCode 单独定义了一个ReturnCode枚举类用于存储代码和返回的M...

在前后端分离的情况下,我们经常会定义一个统一的反回数据格式,通常都会包含状态码,返回信息,返回的数据,是否成功等参数。

1、ResultCode

 单独定义了一个ReturnCode枚举类用于存储代码和返回的Message

public enum ResultCode {

//成功

SUCCESS(200),

// 失败

FAIL(400),

// 未认证(签名错误)

UNAUTHORIZED(401),

// 接口不存在

NOT_FOUND(404),

// 服务器内部错误

INTERNAL_SERVER_ERROR(500);

public int code;

ResultCode(int code)

{

this.code=code;

}

}

2、ResponseResult

/*

统一返回信息

*/

public class ResponseResult<T> {

public int code; //返回状态码200成功

private String msg; //返回描述信息

private T data; //返回内容体

public ResponseResult<T> setCode(ResultCode retCode) {

this.code = retCode.code;

return this;

}

public int getCode() {

return code;

}

public ResponseResult<T> setCode(int code) {

this.code = code;

return this;

}

public String getMsg() {

return msg;

}

public ResponseResult<T> setMsg(String msg) {

this.msg = msg;

return this;

}

public T getData() {

return data;

}

public ResponseResult<T> setData(T data) {

this.data = data;

return this;

}

}

在定义一个统一返回类:

3、Response

public class Response {

private final static String SUCCESS = "success";

private final static String FAIL = "fail";

public static <T> ResponseResult<T> makeOKRsp() {

return new ResponseResult<T>().setCode(ResultCode.SUCCESS).setMsg(SUCCESS);

}

public static <T> ResponseResult<T> makeOKRsp(String message) {

return new ResponseResult<T>().setCode(ResultCode.SUCCESS).setMsg(message);

}

public static <T> ResponseResult<T> makeOKRsp(T data) {

return new ResponseResult<T>().setCode(ResultCode.SUCCESS).setMsg(SUCCESS).setData(data);

}

public static <T> ResponseResult<T> makeErrRsp(String message) {

return new ResponseResult<T>().setCode(ResultCode.INTERNAL_SERVER_ERROR).setMsg(message);

}

public static <T> ResponseResult<T> makeRsp(int code, String msg) {

return new ResponseResult<T>().setCode(code).setMsg(msg);

}

public static <T> ResponseResult<T> makeRsp(int code, String msg, T data) {

return new ResponseResult<T>().setCode(code).setMsg(msg).setData(data);

}

}

4、新建 IUserService

新建测试用户接口类

package com.example.demo.service;

import com.example.demo.entity.User;

public interface IUserService {

public User getUserInfo();

}

5、新建 UserServiceImpl

新建测试用户信息服务类

package com.example.demo.service.impl;

import com.example.demo.entity.User;

import com.example.demo.service.UserService;

import org.springframework.stereotype.Service;

import java.io.File;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.SimpleFormatter;

@Service

public class UserServiceImpl implements IUserService {

public User getUserInfo(){

User user = new User();

user.setName("jack");

user.setPassword(12341234);

return user;

}

}

6、在controller调用

@Autowired

UserService service;

@RequestMapping(value = "/getUserItem",method = RequestMethod.GET)

public ResponseResult<User> getUserItem(){

try {

User user = service.getUserInfo();

String[] arr= new String[]{"测试"};

return  Response.makeOKRsp(user);

}catch (Exception e)

{

return  Response.makeErrRsp("查询用户信息异常");

}

}

返回结果:

640-4.png

7、全局异常处理器 

/**

* 全局异常处理

*/

@RestControllerAdvice

public class GlobalExceptionHandler {

/*============= 请求错误 start ==============================================*/

/**

* HTTP 请求方式不支持异常

* HttpRequestMethodNotSupportedException

* @return {@link ResponseResult}

*/

@ExceptionHandler(value = HttpRequestMethodNotSupportedException.class)

public ResponseResult httpRequestMethodNotSupportException(HttpRequestMethodNotSupportedException e, HttpServletRequest request) {

return Response.makeErrRsp("请求方式不支持异常");

}

/*============= 请求错误 end ==============================================*/

}

 修改一下getUserItem让其抛出自定义查询返回null的异常:

————————————————

版权声明:本文为CSDN博主「CurtainMy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

[我要纠错]
文:王振袢&发表于江苏
关键词: 在前 后端 分离 情况下 我们

来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

点个赞
0
踩一脚
0

您在阅读:Spring Boot 捕捉全局异常 统一返回值

Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利

苏公网安备32010402000125 苏ICP备14051488号-3南京思必达教育科技有限公司版权所有

南京思必达教育科技有限公司版权所有   百度统计

最热文章
最新文章
  • 卡尔蔡司镜片优惠店,镜片价格低
  • 苹果原装手机壳