Ваш код должен что-то делать с возможным NullPointerException
при обнаружении какого-либо исключения, потому что в этом сценарии responseDto
будет нулевым.
Есть много способов решить эту проблему.Решение, которое я рекомендую, не работает с null
возвратами или переменными на Java, попробуйте избегать этого.Вместо этого вы можете использовать Optional
.
Итак, этот код должен решить проблему с сонаром:
public Optional<MyDto> exchangeUrlRequest(String url){
ResponseEntity<MyDto> responseDto;
try{
responseDto = restTemplate.exchange(url, HttpMethod.PUT...);
} catch(HttpClientErrorException e) {
//some code here
}
if (responseDto == null) {
return Optional.empty();
}
return Optional.of(responseDto.getBody());
}
Вы также можете отменить проверку null
, используя Optional<ResponseEntity<MyDto>>
, например:
public Optional<MyDto> exchangeUrlRequest(String url){
Optional<ResponseEntity<MyDto>> optResponseDto = Optional.empty();
try{
optResponseDto = Optional.of(restTemplate.exchange(url, HttpMethod.PUT...));
} catch(HttpClientErrorException e) {
//some code here
}
if (!optResponseDto.isPresent()) {
return Optional.empty();
}
return optResponseDto.get().getBody();
}
Даже я не рекомендую это, вы можете просто проверить ноль responseDto
без использования Optional
:
public Optional<MyDto> exchangeUrlRequest(String url){
ResponseEntity<MyDto> responseDto = null;
try{
responseDto = restTemplate.exchange(url, HttpMethod.PUT...);
} catch(HttpClientErrorException e) {
//some code here
}
if (responseDto == null) {
return null;
}
return responseDto.getBody();
}