【发布时间】:2016-07-30 07:28:24
【问题描述】:
我收到以下 findbugs 错误:
“方法调用为非空参数传递空值:为getApiStatus(ApiResponse)的非空参数传递空值”
如果 CallApi 方法中的 apiResponse 为 null(为简洁起见,此处未显示),它只会抛出一个在 handleApiException 中捕获的异常,如果我们无法对异常执行任何其他操作,它会再次抛出该异常。
无法将 apiResponse 的空值传递到此代码片段底部的 getApiStatus() 方法。在 apiService.CallApi 方法中完成的 null 检查之上,我如何告诉 findbugs 这是这种情况?我试过使用 NonNull 注释,但这并没有解决问题。这是有问题的代码:
ApiResponse apiResponse = null;
try {
apiResponse = apiService.CallApi(apiURL, requestObject);
}
catch (ApiException ex) {
handleApiException(ex);
}
boolean apiStatus = getApiStatus(apiResponse);
有什么想法吗?
【问题讨论】:
-
被调用的方法有可能处理空异常。在这种情况下,Spotbug 可能是错误的。不是spotbug的问题吗?