欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【SpringBoot】Day12-16 异常处理

【SpringBoot】Day12-16 异常处理

2025/7/10 1:59:28 来源:https://blog.csdn.net/yun_shui_/article/details/144430535  浏览:    关键词:【SpringBoot】Day12-16 异常处理

出现异常时,我们的Mapper-Service-Controller三层架构会层层往上抛出异常。如果Controller层也没有对异常做出处理的话,那么最终会抛给框架,框架就会返回一个JSON格式的数据,里面封装的是错误信息。

 

那么我们该怎么解决呢?


解决方案

  • 方案一:在所有Controller的所有方法中进行try…catch处理

    • 缺点:代码臃肿(不推荐)

  • 方案二:全局异常处理器

    • 好处:简单、优雅(推荐)

全局异常处理器

  • 定义全局异常处理器,需要你在项目最外层定义一个和三层架构同级的包,然后里面定义一个类

  • 定义类的时候,在类上加一个注释,@RestControllerAdvice,加上这个注释代表我们定义了一个全局异常处理器
  • 在全局异常处理器中,需要定义一个方法来捕获异常,在这个方法中加上注释@ExceptionHandler,通过这个注解的value属性来指定我们要捕获的是哪一类型的异常

@RestControllerAdvice=@ControllerAdvice+@ResponseBody

处理异常的方法的返回值会转化为json然后在响应给前端


Exception.class 代表拦截所有的异常

package com.itheima.exception;import com.itheima.pojo.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public Result ex(Exception e){e.printStackTrace();return Result.error("sorry");}}

以上就是全局异常处理器的使用,主要涉及到两个注解:

  • @RestControllerAdvice //表示当前类为全局异常处理器

  • @ExceptionHandler //指定可以捕获哪种类型的异常进行处理

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词