侧边栏壁纸
博主头像
BinArTale's Blog 博主等级

行动起来,活在当下

  • 累计撰写 6 篇文章
  • 累计创建 21 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Java 中的 Exception 和 Error

binbin
2025-03-14 / 0 评论 / 0 点赞 / 18 阅读 / 0 字

异常处理

  1. 自定义异常处理的优势

自定义异常会让项目的异常处理更清晰,并且可以使异常携带业务相关的上下文信息,再配合自定义错误码,可以让异常的表达更清楚,也更容易排错。

  1. 自定义异常的实现

创建一个自定义异常类,并继承RuntimeException类,然后在类中定义 code(错误码)、message(也可以直接使用父类的message)

@Getter
public class BusinessException extends RuntimeException {
    /**
     * 异常码
     */
    private final int code;
 
 
    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
    }
    public BusinessException(ErrorCode errorCode, String message) {
        super(message);
        this.code = errorCode.getCode();
    }
    public BusinessException(int code, String message) {
        super(message);
        this.code = code;
    }
}
  1. 全局异常处理类

全局异常处理器能够捕获到程序中抛出的异常,并对这些异常进行统一的处理,从而避免因未处理异常导致系统崩溃或无法正常工作,这可以提高系统的稳定性。

具体应用

  • 错误信息统一处理:可以将不同种类的异常统一格式,增强了用户的体验

  • 错误日志记录:可以在全局异常处理中记录异常信息,包括异常的类型、发生时间、请求参数等,有助于排查问题和分析系统健康状况。

  • 异常信息隐藏:可以隐藏敏感的信息,防止敏感信息泄露给用户。

具体实现:

首先定义一个全局异常处理类,让后使用 @RestControllerAdvice注解该类,表示这是一个全局异常处理器类。

然后根据不同的异常,定义不同的处理方法,并且处理方法要用@ExceptionHandler(BusinessException.class),参数就是要处理的类.class,方法中写异常发生时要处理的内容,并返回一个响应对象,便于前端识别并给出用户友好的错误提示。、

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
 
    @ExceptionHandler(BusinessException.class)
    public BaseResponse<?> businessExceptionHandler(BusinessException e) {
        log.error("businessException: " + e.getMessage(), e);
        return ResultUtils.error(e.getCode(), e.getMessage());
    }
 
 
    @ExceptionHandler(RuntimeException.class)
    public BaseResponse<?> runtimeExceptionHandler(RuntimeException e) {
        log.error("businessException: " + e.getMessage(), e);
        return ResultUtils.error(ErrorCode.SYSTEM_ERROR, e.getMessage());
    }
}

0

评论区