自定义全局异常+处理器handler开发
本文共1360字,阅读本文大概需要3~5分钟
自定义全局异常
/**
* 全局异常处理
*/
@Data
public class BizException extends RuntimeException {
private Integer code;
private String msg;
public BizException(Integer code, String message) {
super(message);
this.code = code;
this.msg = message;
}
public BizException(BizCodeEnum bizCodeEnum) {
super(bizCodeEnum.getMessage());
this.code = bizCodeEnum.getCode();
this.msg = bizCodeEnum.getMessage();
}
}
自定义异常处理器
@ControllerAdvice
@Slf4j
public class ExceptionHandle {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public JsonData Handle(Exception e) {
if (e instanceof BizException) {
BizException bizException = (BizException) e;
log.info("[业务异常]{}", e);
return JsonData.buildCodeAndMsg(bizException.getCode(), bizException.getMsg());
} else {
log.info("[非业务异常]{}", e);
return JsonData.buildError("全局异常,未知错误");
}
}
}
使用
模拟异常(改造Controller层)
@GetMapping("/find/{address_id}")
public JsonData detail(@PathVariable("address_id")Long addressId){
int i = 1 / 0;
AddressDO addressDO = addressService.detail(addressId);
return JsonData.buildSuccess(addressDO);
}
@GetMapping("/find/{address_id}")
public JsonData detail(@PathVariable("address_id")Long addressId){
//int i = 1 / 0;
if(addressId == 1) {
throw new BizException(-1,"测试自定义异常");
}
AddressDO addressDO = addressService.detail(addressId);
return JsonData.buildSuccess(addressDO);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?