如何清楚地检查 HTTP return 代码是否在服务器端异常代码系列中

How to cleanly check HTTP return code is in server side exception code family

我正在使用内部使用 apache http 客户端的 Drop-wizard jersey 客户端,在我的场景中,如果服务器端出现任何错误,即 returns 5xx 服务器错误中的状态代码。

使用下面的代码我正在检查服务器 return 是否是 5XX 代码。

if (response.getStatus() / 100 == 5) {
        // do some work
}

javax.ws.rs.core.Response class 中也有类似的代码,从那里复制下面的代码:-

            public static Family familyOf(final int statusCode) {
                switch (statusCode / 100) {
                    case 1:
                        return Family.INFORMATIONAL;
                    case 2:
                        return Family.SUCCESSFUL;
                    case 3:
                        return Family.REDIRECTION;
                    case 4:
                        return Family.CLIENT_ERROR;
                    case 5:
                        return Family.SERVER_ERROR;
                    default:
                        return Family.OTHER;
                }
            }
        } 

现在我的代码在 checkstyle 和 PMD 规则中失败了。说 100 和 5 是一个神奇的数字。

我不想比较 if 条件下每个服务器端异常代码的 return 状态代码,有没有其他更好的方法可以用来检查 return 代码在服务器错误系列中。

如果有帮助,请尝试以下。

会更喜欢第二个选项。

boolean a=((Integer)response.getStatus()).toString().startsWith("5");
a=(response.getStatus() >=500 && response.getStatus()<= 511);

找到解决方案:-

使用下面的代码我们可以检查return代码是否属于SERVER_ERROR代码。

response.getStatusInfo().getFamily() == Response.Status.Family.SERVER_ERROR