私はPlay Frameworkでアプリケーションを構築していますが、私の関数定義の1つに挑戦しています。これは実際にPlay Frameworkに関する質問ではありませんが、このエラーのためsbt compile
が失敗するため、Playに適用されます。戻り値の例外の処理
だから私は私のクラスのいずれかでこの機能を持っている:私は、関数内で例外をキャッチすることを決めた
private JSONObject getJsonObject(String url) {
HttpResponse<JsonNode> response;
try {
response = Unirest.get(url).asJson();
} catch (UnirestException e) {
Logger.error("Failed to GET data. Connection string was: " + url);
e.printStackTrace();
}
return response.getBody().getObject();
}
理由は、私は私の関数が例外をthrow
したくなかったということでした。そのため、このtry-catch
は、この関数が呼び出される複数の場所で実行する必要があります。私はthrows UnirestExecption
を置くことでそれを避けることができますが、それは、クラスコンストラクタのすべての方法で、関数スタック全体に泡立ちます。
しかし、現在のコードで、私のIDEとsbt compile
は両方を教えてください:
[error]: variable response might not have been initialized
私はこのケースでは、このから抜け出すにはどうすればよいですか? class definitionが私にはあまりにも恐ろしく見えるので、私はnew HttpResponse()
をするように見えません。私はもちろん別のことをすることができませんUnirest.get()
それはそれ自身の例外をスローするので!
どうすればいいですか?
とき 'あなたの関数が返すようにしたいん何UnirestException'が発生しますか? – Marvin
@Marvin私はそれについて考えたこともありませんでした!受け入れられた答えに私のコメントを参照してください。 :-) – dotslash