环顾网络上的示例,我猜测getStatus()为成功返回零,并且大多数失败将表现为异常,而不是非零错误代码。
这是真的吗?当getStatus()返回非零时抛出错误是安全/正确的吗? getStatus()返回的非零值是什么,这些值表示什么?
答案 0 :(得分:2)
我不确定,如果你在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
用于常规例外,或code
用SolrException
(参见枚举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()));
}
}
答案 1 :(得分:0)
基于文章Indexing with SolrJ中getStatus的示例用法,我同意你可以假设当getStatus()返回非零值时抛出和错误是安全/正确的。不幸的是,我无法找到任何表明可能从getStatus()返回的非零值的引用。