步骤
- 新建一个枚举类存放我们自定义的异常信息
- 新建一个异常处理类
- 在我们需要的地方直接throw
- 异常的全局捕获
- 异常捕获后JSON统一返回
都是固定代码直接复制粘贴
1.新建一个枚举类,里面存放异常信息
可以新建一个专门存放enum的包放到里面
/**
* @author
* @date 2020/7/30 14:46
* @description 异常类的枚举
*/
public enum YhxtExceptionEnum {
/**
* 自定义异常以及返回信息
*/
SYSTEM_INSERT_ERROR ("添加数据系统异常",501),
SYSTEM_UPDATE_ERROR ("修改数据系统异常",502),
private Integer code;
private String msg;
YhxtExceptionEnum(String msg, Integer code){
this.code = code;
this.msg = msg;
}
public Integer getCode() {return code;}
public String getMsg() {return msg;}
}
2.再自定义一个异常处理类
/**
* 自定义异常类
* @Author
* @Date 2021/5/10
*/
public class YhxtException extends RuntimeException{
private final Integer code;
public YhxtException(YhxtExceptionEnum exceptionEnum){
super(exceptionEnum.getMsg());
this.code = exceptionEnum.getCode();
}
public YhxtException(Integer code,String msg){
super(msg);
this.code = code;
}
public Integer getCode(){
return code;
}
}
3.有以上两个类就ok了,代码中如果有异常就直接 throw我们这个异常类就ok了
throw new YhxtException(YhxtExceptionEnum.PARAMS_MISS_ERROR);
4.异常的全局捕获,如果代码中有异常被抛出,则就可以在这捕获,并且给前段以jsom的形式返回
/**
* 异常捕获
*
* @Author mq
* @Date 2021/5/11
*/
@Slf4j
@ControllerAdvice
public class YhExceptionHandler {
@ExceptionHandler(YhxtException.class)
@ResponseBody
public Result handlerException(YhxtException yhxtException) {
log.error(yhxtException.getMessage(), yhxtException);
return ResultUtil.error(yhxtException.getMessage(), yhxtException.getCode());
}
}
5.JSON统一返回
public class ResultUtil {
public static Result success(Object o){
Result result = new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(o);
return result;
}
public static Result success(){
return success(null);
}
public static Result error(String msg,Integer code){
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】