分布式全局异常处理

本文介绍了如何在分布式系统中实现全局异常处理。首先定义了异常类,然后在公共服务层定义了全局异常处理类。为了在其他服务中使用这个公共异常处理,有两种方式引入:一是创建spring.factories文件并配置包路径;二是通过在启动类上添加@ComponentScan注解。
摘要由CSDN通过智能技术生成

1、定义异常类

public class BizException extends RuntimeException {
    private final static int DEFAULT_ERROR_CODE = 407;
    /**
     * 错误码
     */
    private int errorCode;
    /**
     * 错误信息
     */
    private String errorMsg;

    public BizException(){};

    public BizException(int errorCode,String errorMsg){
        super(errorMsg);
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    };

    public BizException(String errorMsg){
        super(errorMsg);
        this.errorCode = DEFAULT_ERROR_CODE;
        this.errorMsg = errorMsg;
    };

    public int getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
}

2、在公共服务定义全局异常处理类

@RestController

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在软件开发中,尤其是微服务架构或使用API网关的场景中,全局异常处理是一个关键部分,它有助于统一处理来自不同服务的错误,并向客户端提供一致的响应。设计全局异常处理通常包含以下几个步骤: 1. **设置异常捕获层**:在API网关的入口处,如Spring Cloud Gateway、Kong等,你需要配置一层捕获HTTP请求中的错误。这层通常会监听`ServerErrorHandler`或类似接口,捕获所有未被路由成功的请求。 2. **定义统一的错误结构**:定义一套通用的错误响应格式,比如使用JSON的`Error`对象,包含错误代码、描述、可能的详细信息等,这样可以方便地标准化返回给客户端的信息。 3. **错误分类和处理**:根据异常类型(如`NullPointerException`、`NotFoundException`等),执行不同的处理策略。例如,记录日志、发送告警、或者提供备用的默认处理(如返回404状态码)。 4. **异常转译**:将服务内部抛出的原始异常适配为统一的外部错误,这有助于隐藏底层服务的具体实现细节,只暴露对外可见的错误信息。 5. **错误日志和追踪**:对捕获到的异常进行详细的日志记录,包括异常堆栈跟踪,有助于后期问题排查和性能分析。有些工具如Zipkin或Jaeger可用于分布式追踪。 6. **自定义全局异常处理器**:如果需要,可以创建一个或多个全局异常处理器,用于执行特定的全局错误处理逻辑,如重试策略、降级服务等。 7. **异常处理策略配置**:提供配置选项,允许开发者根据应用需求调整处理行为,如启用/禁用某些类型的错误处理、设置错误响应超时等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值