Does DataInputStream.close()
throw an exception?
Yes, it throws an IOException
when it encounters a problem.
catch{}
Block// Loop with problems public static void main() { . . . try { while ( true ) sum += instr.readInt(); } catch ( EOFException eof ) { System.out.println( "The sum is: " + sum ); instr.close(); <—— throws IOException } catch ( IOException eof ) <—— this catch is for the try{} block { not for the previous catch{} block System.out.println( "Problem reading input" ); instr.close(); <—— throws IOException } . . . }
So there is a problem.
The close()
method inside the catch{}
block
might throw an IOException
which is not caught.
There are ways to deal with this.
One way is not to catch the exception that close()
throws.
Then the header must be
public static void main(String[] args) throws IOException
Can a try{}/catch{}
be nested inside an outer try{}
block?