Springboot项目全局异常统一处理

1. 以前SpringMVC中的异常处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//SpringMVC全局异常处理器,如果要使用这个异常处理器,需要实例化
public class handlerException implements HandlerExceptionResolver {
    //返回的ModelAndView,如果有异常,就给用户一个页面地提示
     
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
 
        //进行异常处理
 
 
        //自定义异常,运行时异常(系统异常,例如数据库连接失败)
 
        //把异常通知给相关人员(短信,邮件)
 
        //需要给用户一个友好的提示
 
        return null;
    }
}

2. 在SpringBoot中的

   基于@ControllerAdvice注解的全局异常统一处理只能针对于Controller层的异常,意思是只能捕获到Controller层的异常,在service层或者其他层面的异常都不能捕获。

  (一)自定义异常:

 

复制代码
/**
 * 自定义异常
 */
public class RRException extends RuntimeException {
    private static final long serialVersionUID = 1L;

    private String msg;
    private int code = 500;

    public RRException(String msg) {
        super(msg);
        this.msg = msg;
    }

    public RRException(String msg, Throwable e) {
        super(msg, e);
        this.msg = msg;
    }

}
复制代码

    (二)统一全局异常处理

  

复制代码
/**
 * @Description: 统一异常处理类
 * @Author: xuxiaoyu
 * @Create: 2019-11-17 10:48
 */
@ControllerAdvice
public class BaseExceptionHandler {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Result error(Exception e){
          e.printStackTrace();
          return new Result(false, StatusCode.ERROR,e.getMessage());
    }
.............
.............
............. }
复制代码

 

  

 

posted @   这都没什么  阅读(2227)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示