- 创建自定义异常
import lombok.Data;
@Data
public class BaseException extends Exception {
private String errCode;
private String errMsg;
public BaseException(String errMsg) {
this.errMsg = errMsg;
}
}
- 创建异常处理类
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
@RestController
public class ExceptionAdvice {
@ExceptionHandler(BaseException.class)
public Map<String, String> exceptionHandler(BaseException ex) {
Map<String, String> res = new HashMap<>();
ex.printStackTrace();
res.put("errCode", (ex.getErrCode() == null ? "500" : ex.getErrCode()));
res.put("errMsg", ex.getErrMsg());
return res;
}
}
@ControllerAdvice:控制器增强,使@ExceptionHandler、@InitBinder、 @ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。
@ExceptionHandler:异常处理器,此注解的作用是当出现其定义的异常时进行处理的方法、
- 测试controller
import com.example.demo.common.BaseException;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
public class ExceptionTestCtl {
@RequestMapping("exp")
public void getMsg() throws Exception {
throw new BaseException("自定义异常");
}
}
- 结果