每当我看到Java 6的流处理,它的完成几乎是这样的:如何关闭Java流?
public void myMethod() throws Exception
{
InputStream stream = null;
try
{
stream = connection.openConnection();
...
}
finally
{
if(stream != null)
{
stream.close();
}
}
}
但我不明白为什么这是必要的。这不会以同样的方式工作吗?
public void myMethod() throws Exception
{
InputStream stream = connection.openConnection();
try
{
...
}
finally
{
stream.close();
}
}
如果openConnection()
失败,那么stream
将不会分配,然后没有什么收反正,不是吗?
它会抛出一个异常,如果connection.openConnection()失败..你的尝试,最后没有任何意义,并假设不失败,并为空'流'然后在最后会抛出'NullPointerException' – nachokk
是的,但如果当前与可能触发IOException的流进行交互,点所隐藏的是什么。 – Taig
@nachokk但该方法已经抛出异常。另外,可能任何使用'stream'的操作都会抛出一个'Exception'。 –