这是Java 7.我有一个类,它在一个实现Closeable
的类中维护一个FTP客户端列表(我称之为代理)。
On .close()我将它们断开连接,但当然每个都可以抛出异常。现在代码如下:
@Override
public void close()
throws IOException
{
IOException toThrow = null;
final List<FtpAgent> list = new ArrayList<>();
agents.drainTo(list); // <-- agents is a BlockingQueue
for (final FtpAgent agent: list)
try {
agent.disconnect();
} catch (IOException e) {
if (toThrow == null)
toThrow = e;
}
if (toThrow != null)
throw toThrow;
}
除了缺少每个例外的记录外,这是解决这个问题的正确方法吗?