我正在使用的 try/catch 块有一个奇怪的问题。我有这个方法,它只是从远程服务获取一些数据并存储它。
public WFSGetCapabilitiesResponse wfsGetCapabilities(String url) {
WFSGetCapabilitiesResponse response = new WFSGetCapabilitiesResponse();
try {
WFSDataStore data = loadWFSCapabilities(url);
String[] typeNames = data.getTypeNames();
ArrayList<WFSFeatureTypeBase> wfsLayers = new ArrayList<WFSFeatureTypeBase>();
for (int i = 0; i < typeNames.length; i++) {
String typeName = typeNames[i];
WFSFeatureTypeBase newLayer = new WFSFeatureTypeBase();
newLayer.setTypeName(typeName);
newLayer.setName(typeName.split(":")[1]);
newLayer.setTitle(data.getFeatureTypeTitle(typeName));
newLayer.setAbstract(data.getFeatureTypeAbstract(typeName));
newLayer.setServiceUrl(url.split("\\?")[0]);
wfsLayers.add(newLayer);
}
response.setWFSLayers(wfsLayers);
} catch (IOException e) {
response.setError(WCSCapabilitiesResponse.IO_EXCEPTION);
response.setErrorMessage(e.getMessage());
response.setSuccessful(false);
e.printStackTrace();
return response;
}
return response;
}
如果我使用这段代码运行,我会得到一个空指针异常('data' 为空,但不知道它是否相关)。但是,如果我从我的 catch 块中删除 return 语句,一切都很好。
奇怪的是,在这两种情况下都没有捕获 IOException,所以我不明白为什么它会产生如此大的影响。
所以再次,在 catch 块中返回它不起作用,没有它它确实......我真的不明白为什么会发生这种情况。
有任何想法吗?