Re: Closing Files that Weren't Successfully Opened
On 03/16/2011 07:52 AM, Andreas Leitgeb wrote:
Lew<noone@lewscanon.com> wrote:
On 03/16/2011 07:33 AM, Michal Kleczek wrote:
Lew wrote:
Michal Kleczek wrote:
public void useResource( String src, String dst ) {
final BufferedReader reader;
try {
reader = new BufferedReader( new FileReader( src ));
} catch ( IOException exc ) {
[...]
is not exception safe - if BufferedReader constructor throws you've got a
resource leak.
Hence the 'catch' block. What resource can leak there?
A file handle. You do not call close() on FileReader in case BufferedReader
constructor throws.
Non-issue. If FileReader doesn't then BufferedReader won't.
How is a leaked(for uncontrollable time) file handle a non-issue?
The other statement is unclear, but could be taken as confirming
the issue: FileReader will free the filehandle not before it is
garbage-collected and (as you said) BufferedReader won't, either.
There won't be a leaked file handle because there won't be an I/O exception
from the BufferedReader if there isn't one from the FileReader.
--
Lew
Honi soit qui mal y pense.