Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #7059

Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound

From Lew <lewbloch@gmail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound
Date 2011-08-12 14:27 -0700
Organization http://groups.google.com
Message-ID <357bc706-6c57-44bd-b43a-0f601cc1ad2f@glegroupsg2000goo.googlegroups.com> (permalink)
References <0f7fb5c4-6031-4778-9ef7-de757bbdda39@m5g2000prh.googlegroups.com>

Show all headers | View raw


KevinSimonson wrote:
> If I write a piece of code that constructs an object of class
> <PrintWriter> by passing it an object of class <BufferedWriter>,
> constructed by passing _it_ an object of type <FileWriter> (all three
> classes under <java.io>), don't have a <throws> clause, have only a
> <catch> clause for <FileNotFoundException>, and then try to compile
> the code the compiler complains, telling me, "unreported exception
> java.io.IOException java.io.IOException: must be caught or declared to
> be thrown".  Of course, if I put a <catch> clause there for
> <IOException>, that fixes the problem and the program compiles just
> fine.
> 
> If, on the other hand, I write a piece of code that constructs an
> object of class <Scanner>, constructed by passing it an object of type
> <File>, don't have a <throws> clause for <FileNotFoundException>, and
> don't put the constructor call in a <try> block at all, I get a
> similar complaint about me not saying anything about exception
> <FileNotFound>.
> 
> Finally, if I have some code that has constructors for _both
> <PrintWriter> and_ <Scanner>, I have to have a <catch> clause for
> _both <IOException> and_ <FileNotFoundException>, in order to keep the
> compiler happy.  But in such a situation I have not been able to find
> a way to _actually get <IOException> thrown_!  What is the purpose of
> having a <catch> block for <IOException> if nothing I do with my code
> will actually throw an <IOException> that is not a
> <FileNotFoundException>?  Or, alternately, is there something I can do
> to _get_ an <IOException> that is not a <FileNotFoundException>
> thrown?

Since 'FileNotFoundException' is a subtype of 'IOException', a catch block for the latter will catch the former.

Another subtype of 'IOException' that is not a super- or subtype of 'FileNotFoundException' is 'EOFException'.  You could write a loop to keep reading a file (that is found) past its end to throw 'EOFException'.

A catch block for 'IOException' will catch both 'FileNotFoundException' and 'EOFException', as well as any other subtype of 'IOException'.

-- 
Lew

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Find similar


Thread

Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound KevinSimonson <kvnsmnsn@hotmail.com> - 2011-08-12 08:39 -0700
  Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound Knute Johnson <september@knutejohnson.com> - 2011-08-12 08:54 -0700
  Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound markspace <-@.> - 2011-08-12 08:57 -0700
    Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound KevinSimonson <kvnsmnsn@hotmail.com> - 2011-08-12 11:19 -0700
      Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound markspace <-@.> - 2011-08-12 12:08 -0700
        Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound Patricia Shanahan <pats@acm.org> - 2011-08-12 12:26 -0700
      Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-08-12 19:35 +0000
  Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound Patricia Shanahan <pats@acm.org> - 2011-08-12 12:31 -0700
    Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound KevinSimonson <kvnsmnsn@hotmail.com> - 2011-08-12 13:10 -0700
  Re: Trying to Understand Purpose of a Catch Block for IOException in the Presence of One for FileNotFound Lew <lewbloch@gmail.com> - 2011-08-12 14:27 -0700

csiph-web