package com.gblfy.distributedlimiter.enums;
public enum ServiceErrCode {
REQ_PARAM_ERR(10001, "您的手慢了,秒杀完毕!"),
NOTFOUND_RESULT_ERR(10004, "服务器异常");
private int code;
private String msg;
ServiceErrCode(int code, String msg){
this.code = code;
this.msg = msg;}
public int getCode(){return code;}
public String getMsg(){return msg;}}
2. 创建一个自定义异常类继承RuntimeException。
package com.gblfy.distributedlimiter.exception;import com.gblfy.distributedlimiter.enums.ServiceErrCode;
public class BaseServiceException extends RuntimeException {
private int code;
public BaseServiceException(String message, ServiceErrCode serviceErrCode){//构造器的第二个参数是上面创建的那个枚举,之后把枚举里面定义的code给了这个code
super(message);
this.code = serviceErrCode.getCode();}
public int getCode(){return code;}
@Override
public String getMessage(){return super.getMessage();}}
3. 自定义异常
package com.gblfy.distributedlimiter.exception;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.node.ObjectNode;import com.gblfy.distributedlimiter.exception.BaseServiceException;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.annotation.Resource;
/**
* 标记这是一个异常处理类
*/
@RestControllerAdvice
public class CustomExtHandler {
@Resource
private ObjectMapper jsonMapper;
@ExceptionHandler(BaseServiceException.class)
public ObjectNode baseServiceException(BaseServiceException e){
int code = e.getCode();
String msg = e.getMessage();return jsonMapper.createObjectNode().put("code",code).put("msg",msg);}}
4. 抛出异常
package com.gblfy.distributedlimiter.controller;import com.gblfy.distributedlimiter.enums.ServiceErrCode;import com.gblfy.distributedlimiter.exception.BaseServiceException;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;
@RestController
public class SentinelLimiterController {
@GetMapping("/excepton")
public void exceptonHandle(){
//如果超过流控管理的就抛出异常
throw new BaseServiceException(ServiceErrCode.REQ_PARAM_ERR.getMsg(), ServiceErrCode.REQ_PARAM_ERR);}}