GlobalExceptionHandler全局异常处理器

  背景需求:     

         在开发项目中对一些在会出现的异常或者说是需要给前端响应后端异常时或者说给客户端响应一些友好提示时,一般来说有两种方式:1.try catch 自行对异常进行捕捉;2.在项目中创建全局处理器,对整个项目的全局异常进行捕捉然后响应给前端或进行相应需求处理

  具体步骤:

   1.在项目的公共功能包目录下编写GlobalExceptionHandler全局异常处理器类,在类上添加@RestControllerAdvice注解(表示被标识的类可以作用于项目中所有使用@Restmapping注解包括reful风格注解的方法; 例:

/**
 * @author Upjqs
 * 全局异常处理器
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    //一个方法处理一个特定的异常(异常尽量精确)

    /**
     * 员工新增,账号重复异常,响应友好提示
     * @param ex 异常变量名
     * @return String字符串类型的r响应结果
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> SQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException ex) {
        //将错误信息输出到控制台 异常对象调用P开头方法 打印一堆跟踪调试
        ex.printStackTrace();
        log.info("错误信息为:{}", ex.getMessage());
        //在前端或者客户端返回友好提示
        return R.error("该账户已存在");
    }

}

   2.上面编写全局异常类后,在类中编写一个处理异常的方法,然后使用@ExceptionHandler注解进行标识,@ExceptionHandler注解表示被标识的方法可以处理项目中其他被@RestControllerAdvice作用的所有方法中的异常;一般会在@ExceptionHandler注解的参数中定义所需处理的异常类的class;

代码示例中的异常对象调用的 printStackTrace方法为在控制台打印异常信息 

   3.在方法中编写处理异常的需求代码:例 响应友好信息给前端.

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot的GlobalExceptionHandler是一个全局异常处理,用于捕获和处理应用程序中发生的所有异常。它可以帮助我们统一处理异常,使代码更加简洁和易于维护。 在Spring Boot中使用GlobalExceptionHandler非常简单,只需在应用程序中定义一个类,使用@ControllerAdvice和@ExceptionHandler注解来标记它。这个类将成为我们的全局异常处理。 使用GlobalExceptionHandler,我们可以通过编写自定义的异常处理方法来处理特定类型的异常。这些方法需要使用@ExceptionHandler注解进行标记,并指定要捕获的异常类型。在这些方法中,我们可以编写逻辑来处理异常,例如返回自定义的错误消息、记录异常等。 此外,我们还可以在全局异常处理中定义一个通用的异常处理方法,用于处理其他未处理的异常。通过捕获Exception类的异常,我们可以确保所有未捕获的异常都将被处理。 全局异常处理还可以与其他Spring Boot功能集成,例如使用@ControllerAdvice和@RestControllerAdvice注解将异常处理直接绑定到特定的Controller或RestController。这样,异常处理将只处理与其绑定的控制中发生的异常。 总而言之,Spring Boot的GlobalExceptionHandler是一个非常强大和灵活的工具,可以帮助我们统一处理应用程序中的异常。它不仅可以提供自定义的异常处理逻辑,还可以与其他Spring Boot功能集成,使我们的代码更加简洁和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值