如何清楚地检查 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
我正在使用内部使用 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