我有以下Java類,它執行一件事情,從config.properties中觸發值。我需要用try/catch/finally塊來包圍fileInputStream.close嗎?它是如何完成的?
當談到關閉fileInputStream
的時候,我想我在維基百科上讀過,最好能在最後一個塊中使用它。因爲它在try/catch塊中工作得很好。
你能告訴我糾正得到fileInputStream.close()
在最後一節嗎?
ConfigProperties.java package base;
import java.io.FileInputStream;
import java.util.Properties;
public class ConfigProperties {
public FileInputStream fileInputStream;
public String property;
public String getConfigProperties(String strProperty) {
Properties configProperties = new Properties();
try {
fileInputStream = new FileInputStream("resources/config.properties");
configProperties.load(fileInputStream);
property = configProperties.getProperty(strProperty);
System.out.println("getConfigProperties(" + strProperty + ")");
// use a finally block to close your Stream.
// If an exception occurs, do you want the application to shut down?
} catch (Exception ex) {
// TODO
System.out.println("Exception: " + ex);
}
finally {
fileInputStream.close();
}
return property;
}
}
解決方案只是按照Eclipse的建議,並在finally塊中執行此操作嗎?
finally {
try {
fileInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
謝謝大家!
FYI:公地IO有一個很好的功能:IOUtils.closeQuietly()將關閉try/catch。你的代碼看起來好多了:)請記住,這個函數並沒有給你迴應IOException的機會,但通常人們不會這樣做,並且無論如何都會忽略異常。如果您需要回應,請製作您自己的實用程序方法,記錄或打印堆棧跟蹤或您需要執行的任何操作。 – Matt 2012-07-24 00:42:57