Почему мне нужно использовать finally для закрытия ресурсов?

В большинстве случаев я вижу, что блок finally используется только для чего-то вроде

FileInputStream f;
try{
    f= new FileInputStream("sample.txt");
    //something that uses f and sometimes throws an exception
}
catch(IOException ex){
    /* Handle it somehow */
}
finally{
    f.close();
}

Мой вопрос: если область видимости f заканчивается охватывающим блоком, зачем нам закрывать его в файле finally?

5
задан Jonathan Leffler 8 February 2014 в 22:22
поделиться