正确使用SolrResponse.getStatus()

在Web上查看示例时,我猜测
getStatus()为成功返回零,并且大多数失败将显示为异常,而不是非零错误代码.

真的吗?当getStatus()返回非零时抛出错误是安全/正确的吗? getStatus()返回的非零值是什么,这些值表示什么?

最佳答案 我不确定,如果你在solrj中看到一个非零代码,因为在org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpRequestBase,ResponseParser):491表示每个非ok状态将抛出代码SolrException(sorlj 5.3.0).

可能的值是(根据this,Solr 1.x)在org.apache.solr.core.SolrCore中设置,在方法postDecorateResponse(Solr 5.2.1,之前它曾经是方法setResponseHeaderValues)中,它将使用500用于一般异常或SolrException的代码(请参阅Enum SolrException.ErrorCode):

400 - BAD_REQUEST
401 - UNAUTHORIZED
403 - FORBIDDEN
404 - NOT_FOUND
409 - CONFLICT
415 - UNSUPPORTED_MEDIA_TYPE
500 - SERVER_ERROR
503 - SERVICE_UNAVAILABLE
510 - INVALID_STATE
  0 - UNKNOWN

我最终将每个响应传递给check-Method,这将抛出异常:

private void checkResponse(SolrResponseBase response){
    if(response.getStatus() != 0){
        throw new RuntimeException(String.format("Solr-Response has error code %s",response.getStatus()));
    }
}
点赞