Exercise :: Exceptions - Pointing out the correct statements
- Exceptions - Finding the output
- Exceptions - Pointing out the correct statements
1. |
and given that all methods of class FileOutputStream, including close(), throw an IOException, which of these is true? |
|||||||
Answer: Option D Explanation: Any method (in this case, the main() method) that throws a checked exception (in this case, out.close() ) must be called within a try clause, or the method must declare that it throws the exception. Either main() must declare that it throws an exception, or the call to out.close() in the finally block must fall inside a (in this case nested) try-catch block. |
2. |
which answer most closely indicates the behavior of the program? |
|||||||
Answer: Option D Explanation: Once the program throws a RuntimeException (in the throwit() method) that is not caught, the finally block will be executed and the program will be terminated. If a method does not handle an exception, the finally block is executed before the exception is propagated. |
3. |
At Point X on line 5, which code is necessary to make the code compile? |
|||||||
Answer: Option B Explanation: Option B is correct. This works because it DOES throw an exception if an error occurs. Option A is wrong. If you compile the code as given the compiler will complain: "unreported exception must be caught or declared to be thrown" The class extends Exception so we are forced to test for exceptions. Option C is wrong. The catch statement belongs in a method body not a method specification. Option D is wrong. TestException is a subclass of Exception therefore the test method, in this example, must throw TestException or some other class further up the Exception tree. Throwing RuntimeException is just not on as this belongs in the java.lang.RuntimeException branch (it is not a superclass of TestException). The compiler complains with the same error as in A above. |
4. |
and given that EOFException and FileNotFoundException are both subclasses of IOException, and further assuming this block of code is placed into a class, which statement is most true concerning this code? |
|||||||
Answer: Option A Explanation: Line 7 will cause a compiler error. The only legal statements after try blocks are either catch or finally statements. Option B, C, and D are incorrect based on the program logic described above. If line 7 was removed, the code would compile and the correct answer would be Option B. |
5. | Which statement is true? |
|||||||
Answer: Option A Explanation: Option A is correct. If the class specified in the catch clause does have subclasses, any exception object that subclasses the specified class will be caught as well. Option B is wrong. The error class is a subclass of Throwable and not Runtime Exception. Option C is wrong. You do not catch this class of error. Option D is wrong. An exception can be thrown to the next method higher up the call stack. |