🧑💻作者名称:DaenCode
🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。
😎人生感悟:尝尽人生百味,方知世间冷暖。
📖所属专栏:SpringBoot实战
思维导图
🌟前言
在开发中,都离不开自定义异常、全局处理异常的使用。比如说在一些网站中看到的系统异常,请联系管理员、网络异常等等,都是通过其处理。如果按照下方图片中的信息展示给用户,谁能看的懂呢?于是这就体现出了自定义异常、全局处理异常的作用。
🌟前置知识
@ControllerAdvice
:用于标识一个全局异常处理类。@ExceptionHandler
:用于标识全局异常处理类中的方法上,被标记的方法会在发生其特定异常时执行。@RestControllerAdvice
:相当于@ControllerAdvice+@ResponseBody注解的组合。也就是一共有两种实现方式。
方式一:@ControllerAdvice+@ExceptionHandler+@ResponseBody
方式二:@RestControllerAdvice+@ExceptionHandler
执行流程:
- 当请求到达Controller时,通过AOP代理机制对Controller进行增强。
- 在AOP增强的过程中,如果请求处理过程中发生异常,AOP拦截器会捕获异常,并将其- 传递给全局异常处理器。
- 全局异常处理器根据异常类型进行匹配,并调用相应的异常处理方法进行处理。
- 异常处理方法执行完毕后,返回结果给AOP拦截器,AOP拦截器将结果返回给原始的Controller方法或其他地方。
🌟具体实现步骤
定义自定义异常类
自定义异常类:负责返回特定信息的异常。在实际开发中会根据业务需求进行自定义异常类的划分:订单模块的异常、收货模块的异常,每个模块的异常又包含很多不同的异常码。
思路:
- 根据业务范围
定义见名知意的类名称
,比如说订单异常可以为OrderException。因举例我这里起的是SelfException。 -
继承RuntimenException
。 -
声明异常码、异常信息
。 -
实现有参构造器
。目的是为了在throw new XXXException时,自定义异常码、异常信息。
public class SelfException extends RuntimeException{
//异常码
private Integer code;
//异常信息
private String msg;
//创建构造器,为了抛出自定义信息的异常
public SelfException(Integer code,String msg){
this.code=code;
this.msg=msg;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
定义全局异常处理类
全局异常处理类:负责捕获具体的异常或者全局异常,返回JSON格式数据给前端。
思路:
- 创建全局异常处理类。并用@RestControllerAdvice标识。
- 创建异常处理方法。并用ExceptionHandler()标识此方法处理的异常。
- 判断发生的异常是否是SelfException,若是则返回相应的异常码、异常信息。否则返回全局异常。
@RestControllerAdvice
public class SelfExceptionHandler {
//捕获所有异常,若值为SelfException,则捕获SelfException
@ExceptionHandler(Exception.class)
public JsonData handle(Exception e){
//判断异常是否是自定义异常,若是则返回相应的异常码、异常信息。不是则返回全局异常。
if (e instanceof SelfException){
SelfException selfException=(SelfException) e;
return JsonData.buildError(selfException.getCode(), selfException.getMsg());
}else {
return JsonData.buildError("系统异常,联系管理员");
}
}
}
🌟写在最后
有关于SpringBoot自定义异常、全局处理异常到此就结束了。感谢大家的阅读,希望大家在评论区对此部分内容散发讨论,便于大家学到更多的知识。还有一张处理全局异常的方式是返回页面的方式,感兴趣的大家可以在网上搜搜,现在一般就是用返回JSON格式的进行处理。文章来源:https://www.toymoban.com/news/detail-628099.html
文章来源地址https://www.toymoban.com/news/detail-628099.html
到了这里,关于一张思维导图带你学会Springboot创建全局异常、自定义异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!