异常处理

目录

异常处理

处理异常

方案一

方案二

小结


异常处理

  • 程序开发过程中不可避免地会遇见异常现象
  • 在案例功能的实现中我们并没有设置如何对于程序出现异常时如何进行处理
    • 在三层架构中,如果持久层程序运行出现错误,由于我们在三层架构中都没有设置如何处理程序运行异常,那么就会将程序运行的报错信息传递给调用层,比如:Mapper接口类出现问题,那么就会把报错返回给调用的Service类,Service类就会把报错返回给Controller类,最后返回给前端。

    • 具体如下:添加一个已经存在的部门,由于最开始创建depts数据表时,限制了部门名称的唯一性

    • 前端获取的异常信息

处理异常

方案一

  • 在Controller类中的方法中进行try...catch处理
    • 但是控制类中的方法有很多,这样做会加大代码的冗余程度,不推荐

方案二

  • 定义一个全局异常处理器
    • 全局异常处理器,将异常处理过后,将处理结果以标准的响应结果Result返回给前端。

    • 具体代码如下
      *

      java 复制代码
      package com.example.tlias.Exception;
      
      import com.example.tlias.pojo.Result;
      import org.springframework.web.bind.annotation.ExceptionHandler;
      import org.springframework.web.bind.annotation.RestControllerAdvice;
      
      // todo 全局异常处理器
      @RestControllerAdvice //todo = ControllerAdvice + ResponseBody(将方法的返回值转换为JSON格式数据)
      public class GlobalExceptionHandler {
          @ExceptionHandler(Exception.class) // todo 设置要捕获的异常,这里设置捕获所有异常类
          public Result ex(Exception e) {
              e.printStackTrace();//输出异常堆栈信息
              return Result.error("对不起,操作失败,请联系管理员");
          }
      }
    • 运行结果

    • 将设置的Result类的响应结果以JSON数据格式响应给前端

小结

  • 全局异常处理器
    • @RestControllerAdvice
    • @ExceptionHandler //设置捕获异常的类型
相关推荐
流年似水~1 小时前
Java新手5分钟接AI:Spring AI Alibaba实战
java·人工智能·spring
jnrjian2 小时前
Library Cache Load Lock library cache pins are replaced by mutexes
java·后端·spring
952363 小时前
SpringAOP
java·后端·学习·spring
zx2859634003 小时前
Laravel6.x新特性全解析
java·后端·spring
未若君雅裁4 小时前
Spring Statemachine 实战入门:从零实现一个订单状态流转 Demo
java·spring·状态模式
java1234_小锋5 小时前
Spring AI 2.0 开发Java Agent智能体 - Advisors —— 拦截器模式增强AI能力
java·人工智能·spring·ai·spring ai2.0
苍煜6 小时前
SpringBoot Spring事务完整版详解:@Transactional注解实操 + 七大事务传播机制用法
spring boot·spring·oracle
云烟成雨TD6 小时前
Spring AI 1.x 系列【29】Embedding Model(嵌入模型)
java·人工智能·spring
callJJ17 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
phltxy17 小时前
Spring Cloud 分布式服务部署实战:从 0 到 1 实现微服务上线
spring·spring cloud·微服务