Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Exception Propagation in Java
π Scenario: Imagine you are building a simple banking application. You want to check if a withdrawal amount is valid. If the amount is negative, an exception should be thrown and passed up the call chain until it is handled.
π― Goal: Build a Java program that demonstrates how exceptions can be thrown in one method and caught in another method higher up the call stack.
π What You'll Learn
Create a method that throws an exception when a negative withdrawal amount is passed
Create a method that calls the first method and propagates the exception
Handle the exception in the main method
Print a message when the exception is caught
π‘ Why This Matters
π Real World
Exception propagation is used in real-world applications to handle errors like invalid inputs or failed operations without crashing the program immediately.
πΌ Career
Understanding exception propagation is essential for writing robust Java applications and is a common topic in software development interviews.
Progress0 / 4 steps
1
Create the withdraw method that throws an exception
Create a method called withdraw that takes an int amount parameter. If amount is less than 0, throw a new IllegalArgumentException with the message "Negative amount not allowed".
Java
Hint
Use throw new IllegalArgumentException("Negative amount not allowed") inside an if statement checking if amount < 0.
2
Create the processWithdrawal method that calls withdraw
Create a method called processWithdrawal that takes an int amount parameter and calls the withdraw method with this amount. Do not handle the exception here; let it propagate.
Java
Hint
Simply call withdraw(amount) inside processWithdrawal without try-catch.
3
Call processWithdrawal from main and handle the exception
In the main method, call processWithdrawal with the value -100. Use a try-catch block to catch IllegalArgumentException and print "Exception caught: " followed by the exception message.
Java
Hint
Use try and catch (IllegalArgumentException e) around the call to processWithdrawal(-100). Print the message with System.out.println.
4
Print the final output
Run the program and print the output that shows the exception message caught in main.
Java
Hint
Run the program to see the exception message printed from the catch block.
Practice
(1/5)
1. What does exception propagation mean in Java?
easy
A. An exception is passed up the call stack until caught or program ends
B. An exception is ignored and the program continues normally
C. An exception is automatically fixed by the JVM
D. An exception is converted into a warning message
Solution
Step 1: Understand exception propagation concept
When an exception occurs, Java looks for a matching catch block in the current method. If none is found, it passes the exception to the caller method.
Step 2: Follow the exception up the call stack
This passing continues up the call stack until a catch block handles it or the program terminates if uncaught.
Final Answer:
An exception is passed up the call stack until caught or program ends -> Option A
Quick Check:
Exception moves up call stack = A [OK]
Hint: Exception moves up call stack until caught [OK]
Common Mistakes:
Thinking exceptions are ignored automatically
Believing JVM fixes exceptions silently
Confusing exceptions with warnings
2. Which of the following is the correct way to declare a method that might throw an exception?
easy
A. public void readFile() throws IOException {}
B. public void readFile() throw IOException {}
C. public void readFile() throws IOException() {}
D. public void readFile() throws-IOException {}
Solution
Step 1: Recall correct syntax for throws clause
The keyword throws is used followed by the exception class name without parentheses.
Step 2: Check each option syntax
public void readFile() throws IOException {} uses correct syntax: throws IOException. The other options have syntax errors.
Final Answer:
public void readFile() throws IOException {} -> Option A
Quick Check:
Correct throws syntax = B [OK]
Hint: Use 'throws' keyword followed by exception class name [OK]
Common Mistakes:
Writing 'throw' instead of 'throws'
Adding parentheses after exception name
Using invalid symbols like '-'
3. What will be the output of the following code?
public class Test {
static void method() throws Exception {
throw new Exception("Error occurred");
}
public static void main(String[] args) {
try {
method();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
medium
A. Compilation error
B. Exception in thread "main" java.lang.Exception
C. No output
D. Error occurred
Solution
Step 1: Analyze method throwing exception
The method explicitly throws a new Exception with message "Error occurred".
Step 2: Check exception handling in main
The main method calls method() inside try-catch. The catch block prints the exception message.
Final Answer:
Error occurred -> Option D
Quick Check:
Exception caught and message printed = C [OK]
Hint: Exception message prints if caught in try-catch [OK]
Common Mistakes:
Assuming uncaught exception causes crash
Confusing exception message with full stack trace
Thinking code won't compile without throws in main
4. Identify the error in this code snippet:
public class Demo {
static void risky() {
throw new IOException("IO error");
}
public static void main(String[] args) {
risky();
}
}
medium
A. main method must catch IOException
B. IOException cannot be thrown directly
C. Method risky() must declare 'throws IOException'
D. No error, code is correct
Solution
Step 1: Check exception type thrown
IOException is a checked exception and must be declared or caught.
Step 2: Verify method declaration
Method risky() throws IOException but does not declare it with 'throws' keyword, causing a compile error.
Final Answer:
Method risky() must declare 'throws IOException' -> Option C
Quick Check:
Checked exceptions require throws declaration = A [OK]
Hint: Checked exceptions need 'throws' or try-catch [OK]
Common Mistakes:
Ignoring throws declaration for checked exceptions
Thinking IOException is unchecked
Assuming main must catch exception always
5. Consider this code:
class A {
void process() throws Exception {
throw new Exception("Error in A");
}
}
class B extends A {
@Override
void process() throws Exception {
super.process();
}
}
public class Main {
public static void main(String[] args) {
A obj = new B();
try {
obj.process();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
What will be the output and why?
hard
A. Runtime error due to invalid override
B. Error in A, because exception propagates from superclass method
C. Compilation error due to throws mismatch
D. No output, exception is swallowed silently
Solution
Step 1: Understand method overriding with exceptions
Subclass B overrides process() and calls super.process(), which throws Exception.
Step 2: Exception propagates to main and is caught
Main calls obj.process() on B instance, exception thrown by A.process() propagates and is caught in main's try-catch, printing the message.
Final Answer:
Error in A, because exception propagates from superclass method -> Option B
Quick Check:
Exception propagates through override and caught = D [OK]
Hint: Overridden method can throw same exceptions up [OK]
Common Mistakes:
Thinking override cannot throw exceptions declared in superclass