Exams Knowledge Hub

MCQs for Competitive Exams, School & College Exams

Module: | Classes, Objects, OOPs & Inheritance

Q43: Consider the following statements regarding Checked and Unchecked Exceptions:

1. Checked exceptions are verified by the Java compiler at compile-time, explicitly forcing the developer to either handle them using a try-catch block or declare them using the throws keyword.
2. Unchecked exceptions strictly inherit from the java.lang.RuntimeException class or the java.lang.Error class and occur entirely at runtime, bypassing mandatory compile-time checks.
3. A developer can successfully bypass the compiler's strict checked exception enforcement by forcefully casting a checked exception instance (like IOException) into a RuntimeException.

Which of the above statements is/are correct?
A
Only 1 and 2
B
Only 1 and 3
C
Only 2 and 3
D
1, 2, and 3
✅ Correct Answer: A
🎯 Quick Answer:
The correct combination is 1 and 2. Statement 3 is incorrect because standard object-oriented typecasting rules completely prohibit casting a checked exception (like IOException) into a RuntimeException, as they reside on completely different inheritance branches. Attempting this will trigger an immediate ClassCastException.
Concept Definition: Checked Exceptions represent external conditions outside the application's immediate control (e.g., file systems, network availability). Unchecked Exceptions represent programmatic logic errors (e.g., dividing by zero, null pointer access). Structural Breakdown: Checked Exceptions extend Exception but not RuntimeException.
Unchecked Exceptions extend RuntimeException or Error.
Historical/Related Context: Java is one of the only mainstream programming languages to heavily enforce Checked Exceptions.
Modern languages like Kotlin and C# abandoned them because enterprise developers often found the mandatory try-catch boilerplate tedious, leading to bad practices like swallowing exceptions (catching them but doing nothing). Causal Reasoning: The compiler intentionally ignores Unchecked Exceptions because verifying them is mathematically impossible.
A NullPointerException can theoretically occur on almost every single object interaction in Java.
If the compiler forced developers to wrap every variable access in a try-catch block, writing readable code would become impossible.