do I need to surround fileInputStream.close with a try/catch/finally block? How is it done?
java, oop, try-catch-finally
Solution
Because `FileInputStream.close()` throws an IOException, and the finally{} block doesn't catch exceptions. So you need to either catch it or declare it in order to compile. Eclipse's suggestion is fine; catch the IOException inside the finally{} block.
Problem
I have the following Java Class that does one thing, fires out values from `config.properties`. When it comes time to close the `fileInputStream`, I think I read on Wikipedia that it is good to have it in a finally block. Because it honestly works just fine in try/catch block. Can you show me correction to get `fileInputStream.close()` in a finally section? 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; } } ``` Is the solution only to do as Eclipse suggests and do this in the finally block? ``` finally { try { fileInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } ```