私はいくつかの状態を照会し、失敗状態で自分のメソッドから抜け出したいが、この条件もチェックされた例外を防ぐ必要がある。boolean状態をチェックするときにtry/catchを処理するためのよりクリーンな方法がありますか?
私は現在、そのように扱うよ:
try {
if (!isSomeState()) {
error("Failed to realize state");
return;
}
}
catch (SomeStateException ex) {
error("Failed to realize state");
return;
}
私はcatchブロックの中に落下するチェック例外を投げることができました。例外は単にプログラムの流れをリダイレクトされるので、しかし、これは汚い感じている:それは、私が説明するように、この方法でそれを処理することを意図していますので、メソッドは、この例外をスロー持ってしても意味がありません
try {
if (!isSomeState())
throw new SomeStateException();
}
catch (SomeStateException ex) {
error("Failed to realize state");
return;
}
。
更新:
を明確にするために、照会されている状態では、ソケットのI/Oを利用し、従ってIOException
の拡張を投げています。この場合、例外自体は余分ではありません。
結果ブール値は、ある状態がtrue
またはfalse
に設定されているかどうかを表します。 false
に有効である可能性のある追加の状態を問い合わせ続けることに意味がないので、false
をこの例外で返すのは意味がありません。
変更 'isSomeState'方法、それは' SomeStateException'の代わりに、 'falseを返すがスローされますように' –
ブール値の状態を表現するための追加の説明を追加しました。 'false'は有効な結果ですが、例外は' IOException'を表します。 – Zhro