【问题标题】:How to catch HystrixTimeout Exception in Zuul如何在 Zuul 中捕获 HystrixTimeout 异常
【发布时间】:2021-03-07 01:29:39
【问题描述】:

当 Web 服务在某个时间(超时)内没有响应并抛出 HystrixTimeout 异常时,我想在 ZuulFilter 中捕获 HystrixTimeout 异常。我该怎么办?

注意:在 ZuulFilter 中,我捕获了我的自定义异常。像下面的代码

@Override
public Object run() {
    final RequestContext context = RequestContext.getCurrentContext();
    final Object throwable = context.get(THROWABLE_KEY);

    if (throwable instanceof ZuulException) {
        ZuulException zuulException = (ZuulException) throwable;
        
    }
    return null;
}

【问题讨论】:

    标签: java spring-boot exception netflix-zuul hystrix


    【解决方案1】:

    这个问题不是我真正的问题。首先,我明白这一点。因为我的应用程序将 SocketTimeoutException 作为基本异常抛出。因此,如果我可以捕获 SocketTimeoutException,我可以处理这个问题,但是对于这个解决方案,我需要获取异常的原因。我写了一个类似下面代码的方法。

    private Throwable findRightException(Throwable th) {
            Throwable throwable = th;
            if (throwable.getCause() == null || throwable.getCause() instanceof SocketTimeoutException) {
                return throwable.getCause();
            }
            return findRightException(throwable.getCause());
    

    【讨论】:

    • 因为我很伤心,主要的例外是 SocketTimeoutException
    猜你喜欢
    • 2011-04-03
    • 2021-03-26
    • 2013-09-04
    • 2021-05-23
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    相关资源
    最近更新 更多