例如我的代码是这样的,但在声纳中却显示为bug.我们如何解决这个问题?
try {
return restTemplate.getForObject(urlSearchID, AccessIDSearchResponse.class);
} catch (HttpServerErrorException hse) {
AccesIdExceptionUtility.recoverFromHttpServerExc(hse);
} catch (HttpClientErrorException hce) {
AccesIdExceptionUtility.recoverFromHttpClientExc(hce);
} catch (ClientException ce) {
AccesIdExceptionUtility.recoverFromClientExc(ce);
} catch (Exception e) {
AccesIdExceptionUtility.recoverFromException(e);
}
catch (Throwable ex) {
throw new ServiceException(ErrorMessages.EPO_SYSTEM_ERROR, ex.getMessage(), agentSearchUrl);
}
return null;
是的,这是一种不好的做法。在Java中,Throwable是Error和Exception的基类。你已经对Exceptions很熟悉了,它们可以被选中或不被选中,所以你可以捕捉它们并进行处理、记录或重投。
Error比较复杂,它们是JVM的error,比如OutOfMemoryException,这是一个VirtualMachineError。你要如何在你的代码中处理这个问题?答案是:你根本无法处理。
如果你在google上搜索 "可恢复和不可恢复的情况 "Exceptions是可恢复的情况,因为你可以处理NullPointerException,而不可恢复的情况是Errors。
如果你想查看Baeldung,这是一个关于Java,Spring等的很好的博客。https:/www.baeldung.comjava-catch-throwable-bad-practice