每當我看到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'。 –