Java Programming — Exception Handling
Java OOP, collections, multithreading
100 Questions 10 Topics Take Test
Advertisement
Showing 1–10 of 100 questions in Exception Handling
In Java, when an exception is thrown in a try block and caught in a catch block, if the catch block also throws an exception, what happens to the original exception?
A The original exception is lost and only the new exception propagates
B Both exceptions are chained together automatically
C The original exception is stored in the cause field if exception chaining is used
D The JVM throws a CompoundException containing both
Correct Answer:  C. The original exception is stored in the cause field if exception chaining is used
EXPLANATION

When exception chaining is explicitly used with initCause() or constructor parameters, the original exception becomes the cause of the new exception. Without explicit chaining, the original exception is lost. Exception chaining is not automatic in Java.

Take Test
Which scenario would cause a StackOverflowError in Java exception handling?
A Catching too many different exception types
B A method recursively catching and rethrowing the same exception infinitely
C Having more than 10 nested try-catch blocks
D Using throw keyword more than once in a method
Correct Answer:  B. A method recursively catching and rethrowing the same exception infinitely
EXPLANATION

StackOverflowError occurs when stack memory exhausts due to deep recursion. If a method catches an exception and immediately rethrows it without modification, calling itself, stack frames accumulate until overflow. This is a runtime error, not a checked exception.

Take Test
What does the getSuppressed() method of Throwable class return in context of try-with-resources?
A The primary exception thrown in try block
B Array of exceptions suppressed while closing resources
C The exception thrown in finally block
D Exception from outermost try-catch block
Correct Answer:  B. Array of exceptions suppressed while closing resources
EXPLANATION

When try-with-resources encounters an exception while closing a resource, it's added to the suppressed exceptions list. If an exception was already thrown in try, the close exception is suppressed rather than replacing it. getSuppressed() returns array of these suppressed exceptions.

Take Test
In Java 7+, exception handling introduced 'multi-catch' feature using the pipe (|) operator. What's a limitation of multi-catch blocks?
A Cannot have multiple exception types
B Exception types must be unrelated (not in same inheritance hierarchy)
C Can only catch maximum of 2 exception types
D Multi-catch syntax is deprecated in Java 17+
Correct Answer:  B. Exception types must be unrelated (not in same inheritance hierarchy)
EXPLANATION

In multi-catch blocks like 'catch(IOException | SQLException e)', the exception types must not have an inheritance relationship. You cannot do 'catch(Exception | IOException e)' because IOException is a subclass of Exception.

Take Test
What is the primary difference between throw and throws in Java exception handling?
A throw is used in catch block, throws is used in method declaration
B throw explicitly raises an exception, throws declares that a method may throw exceptions
C throw handles exceptions, throws creates exceptions
D Both are identical; throws is just an older syntax
Correct Answer:  B. throw explicitly raises an exception, throws declares that a method may throw exceptions
EXPLANATION

'throw' is a statement that explicitly throws an exception object. 'throws' is a clause in method signature indicating the method may throw specific checked exceptions. Example: throw new IOException(); vs public void method() throws IOException {}

Take Test
Advertisement
Consider a scenario where you have nested try-catch blocks. If both inner and outer catch blocks match the thrown exception type, which one executes?
A Both execute in sequence
B Only the inner catch block executes
C Only the outer catch block executes
D The JVM decides based on exception priority
Correct Answer:  B. Only the inner catch block executes
EXPLANATION

The innermost matching catch block executes first. If it doesn't rethrow the exception, the outer catch block won't execute. The exception is considered handled after the first matching catch block.

Take Test
If a finally block contains a return statement, what happens to an exception thrown in the try block?
A The exception is suppressed and the finally's return value is used
B The exception is propagated after finally executes
C The exception replaces the finally return value
D A compilation error occurs
Correct Answer:  A. The exception is suppressed and the finally's return value is used
EXPLANATION

If finally has a return statement, it suppresses any exception from try/catch blocks. The return value from finally overrides exception propagation. This is generally considered bad practice as it masks exceptions.

Take Test
What is the output of the following code?
try {
int x = 10/0;
} catch(ArithmeticException e) {
System.out.println("Caught");
} finally {
System.out.println("Finally");
}
System.out.println("After");
A Caught\nFinally\nAfter
B Caught\nFinally
C Finally\nAfter
D ArithmeticException is thrown, program terminates
Correct Answer:  A. Caught\nFinally\nAfter
EXPLANATION

When ArithmeticException occurs, it's caught by the catch block printing 'Caught'. The finally block always executes, printing 'Finally'. Then normal program flow continues, printing 'After'.

Take Test
Which of the following exceptions would NOT be caught by catching Exception class in Java?
A IOException
B NullPointerException
C Error
D ArithmeticException
Correct Answer:  C. Error
EXPLANATION

Error is not a subclass of Exception. Both Error and Exception extend Throwable. Errors like OutOfMemoryError, StackOverflowError cannot be caught by Exception handlers. They must be caught separately if needed.

Take Test
Q.10 Medium Exception Handling
In Java 8+, when using try-with-resources with multiple AutoCloseable resources, in what order are they closed?
A In the order they were declared (first declared, first closed)
B In reverse order of declaration (last declared, first closed)
C In random order determined by JVM
D Simultaneously in parallel threads
Correct Answer:  B. In reverse order of declaration (last declared, first closed)
EXPLANATION

Try-with-resources closes resources in LIFO (Last In, First Out) order. If you declare Resource1, then Resource2, Resource2 closes first, then Resource1. This ensures dependencies are respected.

Take Test
IGET
iget AI
Online · Ask anything about exams
Hi! 👋 I'm your iget AI assistant.

Ask me anything about exam prep, MCQ solutions, study tips, or strategies! 🎯
UPSC strategy SSC CGL syllabus Improve aptitude NEET Biology tips