我的主要问题是,我正在使用try-catch执行resttemplate.exchange,并在子句try之前声明一个空值变量,然后在try中使用它。最后,我的方法返回一个值为RESTTemplate的响应。
public MyDto exchangeUrlRequest(String url){
ResponseEntity<MyDto> responseDto = null;
try{
responseDto = restTemplate.exchange(url, HttpMethod.PUT...
}catch(HttpClientErrorException e){
//some code here
}
return responseDto.getBody();
}
本文的预期结果是用Sonarqube解决这个问题。如何将“responsedto”的初始化没有“null”,因为是在声纳上抛出问题。
我已经尝试将“responseEntity responsedto”放在我的try子句中,分配和返回相应的值,但它必须返回try/catch中的一些内容。放入“new responseentity”是错误的,因为我不知道HTTP状态的答案是什么。
当捕获到某个异常时,您的代码需要对可能的NullPointerException
执行一些操作,因为在这种情况下,ResponseDto
将为空。
有很多方法可以解决这个问题。我推荐的解决方案是不要在Java上使用null
返回或变量,尽量避免它。您可以使用可选
。
所以,这个代码应该解决声纳问题:
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());
}
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();
}
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();
}
此代码中可能存在空指针取消引用错误: 如何解决这些问题?
嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?
本文向大家介绍C语言取消引用指针,包括了C语言取消引用指针的使用技巧和注意事项,需要的朋友参考一下 示例 要取消引用a_pointer并更改a的值,我们使用以下操作 可以使用以下打印语句对此进行验证。 但是,将一个NULL指针取消引用或其他无效指针将是错误的。这个 通常是未定义的行为。p1可能不会被取消引用,因为它指向的地址0xbad可能不是有效地址。谁知道那里有什么?它可能是操作系统内存,或另一
我如何避免在这里过度使用试捕?我如何简化裁员
问题内容: 我是GoLang的新手,来自Delphi C ++世界-诚然对这种语言感到非常兴奋,我认为它将成为“下一件大事”。 我正在尝试了解Go解析器和编译器如何处理指针和引用-似乎找不到任何放置一些明确规则的地方。 例如,在下面的代码示例中,返回类型和局部变量是指针类型,并且在其声明中需要使用指针符号,但是在使用时不必取消引用它们:。但是在同一代码中,输入参数被声明为指针,并且必须被取消引用才
我已经在我的sonar实例上测试了规则“正确性--可能的空指针取消引用”和“正确性--在异常路径的方法中可能的空指针取消引用”。不幸的是,以下代码从未被检测为错误 Netbeans能够正确检测到此问题,但sonar 3.6.1不能。 谢谢你的帮助