全局异常处理
为什么进行全局异常处理?
【重要】日常开发中,为了不抛出异常堆栈信息给前端页面,每次编写的controller都要尽可能catch住所有service的异常,代码耦合性高,不利于维护。
所以利用RestControllerAdvice+ExceptionHandler进行全局异常处理,一旦项目中发生了异常,就会进入使用了RestControllerHandler注解中ExceptionHandler注解的方法,我们可以将异常信息输出到指定的位置,并对所有错误信息进行归置。
@RestControllerAdvice
RestControllerAdvice是一个与切面有关的注解,每个切面注解都有自己的作用范围,这个的作用范围是单个项目里面所有使用了RequestMapping(getMapping、postMapping)的方法。
实现方式 (下面这个类就是全部,很简单)
@RestControllerAdvice(basePackages ={"com.tao.controller"})
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(NullPointerException.class)
public ApiResult<String> nullPointerException(NullPointerException exception) {
log.error("空指针异常", exception);
return ApiResult.error("程序内部空指针异常,请联系程序员!");
}
}
当controller 中方法(一定是加了@RequestMapping注解的)抛出空指针异常后,会直接进入此方法进行处理。
测试实例
项目结构
LoginException
GlobalExceptionHandler
UserController
UserService、UserServiceImpl
结果
本文来自博客园,作者:帅气的涛啊,转载请注明原文链接:https://www.cnblogs.com/handsometaoa/p/16478679.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤