900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Spring Boot 细节挖掘(全局异常处理)

Spring Boot 细节挖掘(全局异常处理)

时间:2020-11-22 06:50:45

相关推荐

Spring Boot 细节挖掘(全局异常处理)

对于全局异常处理app开发很重要

直接上步骤:

第一创建JsonResult:

package com.swaager.swaagerdemo.model;/*** @authorseerhuitao 全局接口返回值* @create/6/13*/public class JsonResult {/*** 异常码*/protected String code;/*** 异常信息*/protected String msg;public JsonResult() {this.code = "200";this.msg = "操作成功";}public JsonResult(String code, String msg) {this.code = code;this.msg = msg;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}

第二异常的枚举BusinessMsgEnum:(举例了3中异常)

package com.swaager.swaagerdemo.model;/*** 业务异常提示信息枚举类* @author shengwu ni*/public enum BusinessMsgEnum {/** 参数异常 */PARMETER_EXCEPTION("102", "参数异常!"),/** 等待超时 */SERVICE_TIME_OUT("103", "服务调用超时!"),/** 参数过大 */PARMETER_BIG_EXCEPTION("102", "输入的图片数量不能超过50张!"),/** 500 : 一劳永逸的提示也可以在这定义 */UNEXPECTED_EXCEPTION("500", "系统发生异常,请联系管理员!");// 还可以定义更多的业务异常/*** 消息码*/private String code;/*** 消息内容*/private String msg;private BusinessMsgEnum(String code, String msg) {this.code = code;this.msg = msg;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}

第三异常处理拦截BusinessErrorException:

package com.swaager.swaagerdemo.utils;import com.swaager.swaagerdemo.model.BusinessMsgEnum;/*** @authorseerhuitao 异常处理拦截* @create/6/13*/public class BusinessErrorException extends RuntimeException {private static final long serialVersionUID = -7480022450501760611L;/*** 异常码*/private String code;/*** 异常提示信息*/private String message;public BusinessErrorException(BusinessMsgEnum businessMsgEnum) {this.code = businessMsgEnum.getCode();this.message = businessMsgEnum.getMsg();}// get set方法public static long getSerialVersionUID() {return serialVersionUID;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}@Overridepublic String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}

第四拦截业务异常GlobalExceptionHandler:

package com.swaager.swaagerdemo.utils;import com.swaager.swaagerdemo.model.JsonResult;import org.springframework.http.HttpStatus;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.ResponseStatus;/*** @authorseerhuitao 异常处理类* @create/6/13*/@ControllerAdvice@ResponseBodypublic class GlobalExceptionHandler {/*** 拦截业务异常,返回业务异常信息* @param ex* @return*/@ExceptionHandler(BusinessErrorException.class)@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)public JsonResult handleBusinessError(BusinessErrorException ex) {String code = ex.getCode();String message = ex.getMessage();return new JsonResult(code, message);}}

第五具体在接口里面是如何调用的:ExceptionCotroller

package com.swaager.swaagerdemo.Cotroller;import com.swaager.swaagerdemo.model.BusinessMsgEnum;import com.swaager.swaagerdemo.model.JsonResult;import com.swaager.swaagerdemo.utils.BusinessErrorException;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/exception")public class ExceptionController {@GetMapping("/business")public JsonResult testException() {try {int i = 1 / 0;} catch (Exception e) {throw new BusinessErrorException(BusinessMsgEnum.UNEXPECTED_EXCEPTION);}return new JsonResult();}}

效果展示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。