【发布时间】:2023-12-16 09:33:01
【问题描述】:
我正在使用的 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;
}
如果我使用这段代码运行,我会得到一个空指针异常(“数据”为空,但不知道它是否相关)。但是,如果我从我的 catch 块中删除 return 语句,一切都很好。
奇怪的是,IOException 在这两种情况下都没有被捕获,所以我不明白为什么它会产生如此大的影响。
同样,在 catch 块中返回它不起作用,没有它它会......我真的不明白为什么会发生这种情况。
有什么想法吗?
【问题讨论】:
-
您试图从哪里访问数据? (当它为空时)
-
Define "it works" .... 这可能意味着您返回了某种对象,您没有记录异常,或者您有一些此方法处理的业务案例发生完美。
标签: java exception return catch-block