たとえば、入力/出力ストリームを操作する方法があります。
public void doSomethingWithStreams () throws FileNotFoundException, IOException
{
OutputStream out1, out2;
InputStream in1, in2;
try{
//do something with Streams: read, write, process, etc.
}
finally{
//There I try to close connections
out1.close();
out2.close();
in1.close();
in2.close();
}
}
メソッドはIOExceptionをスローする可能性があり、これは有効な動作です。しかし、この行に例外がある場合:
out1.close();
他の3つのストリームは閉じられません。どのような解決策をお勧めできますか?どのように?すべてにどれだけ近いですか?
私は1つだけ持っています:
public void doSomethingWithStreams () throws FileNotFoundException, IOException
{
OutputStream out1, out2;
InputStream in1, in2;
try{
//do something with Streams: read, write, process, etc.
}
finally{
//There I try to close connections
try{out1.close();}
finally{
try{out2.close();}
finally{
try{in1.close();}
finally{
in2.close();}
}}
}
}
ご覧のとおり、私のアプローチは複数のtry-finallyブロックを使用しています。
いい考えだと思いますか?