私が使用しているtry/catchブロックで奇妙な問題が発生しました。私はこのメソッドを持っています。これは、リモートサービスからデータを取得して保存するだけです。Javaの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;
}
私はこのコードを実行した場合、私は(「データ」のヌルであるが、それは関連性の場合、本当に知らない)nullポインタ例外を取得します。しかし、私がキャッチブロックからreturnステートメントを削除しても問題ありません。
奇妙なことに、IOExceptionはどちらのケースでもキャッチされていないため、なぜそのような影響があるのかわかりません。
もう一度、キャッチブロックでのリターンでは、それが動作しないと動作しません。なぜこのようなことが起こるのかわかりません。
アイデア?
どこからデータにアクセスしようとしていますか? (nullの場合) – RMT
スタックトレースを表示します。 –
"それは動作する"を定義します。これは、ある種のオブジェクトを返したこと、例外をログに記録しなかったこと、またはこのメソッドが完全に発生するビジネスケースがあることを意味する可能性があります。 –