The finally block is used to run code that must happen no matter what, like cleaning up or closing resources.
Finally block in Java
Start learning this pattern below
Jump into concepts and practice - no test required
try { // code that might throw an exception } catch (ExceptionType name) { // code to handle the exception } finally { // code that always runs }
The finally block runs after try and catch, no matter what.
If there is a return statement in try or catch, finally still runs before returning.
try { int result = 10 / 0; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero."); } finally { System.out.println("This always runs."); }
try { System.out.println("Try block running."); } finally { System.out.println("Finally block running."); }
This program tries to divide by zero, catches the error, and then runs the finally block. The program then continues normally.
public class FinallyExample { public static void main(String[] args) { try { System.out.println("Inside try block."); int division = 10 / 0; // This will cause an exception } catch (ArithmeticException e) { System.out.println("Caught an ArithmeticException."); } finally { System.out.println("Finally block always executes."); } System.out.println("Program continues after try-catch-finally."); } }
The finally block is useful for cleanup like closing files or releasing resources.
If the JVM exits (like calling System.exit()), the finally block may not run.
Use finally to make sure important code runs no matter what.
The finally block runs always after try and catch blocks.
It is used to clean up or finalize actions.
Even if an exception happens or a return statement is used, finally still runs.
Practice
What is the main purpose of the finally block in Java exception handling?
Solution
Step 1: Understand the role of try-catch-finally
The try block contains code that might throw exceptions, catch handles them, and finally runs code after both.Step 2: Identify the purpose of finally
The finally block always executes, whether an exception occurs or not, to finalize or clean up resources.Final Answer:
To execute code regardless of whether an exception occurs or not -> Option CQuick Check:
finally always runs = B [OK]
- Thinking finally only runs if an exception occurs
- Confusing finally with catch block
- Assuming finally can catch exceptions
Which of the following is the correct syntax to add a finally block after a try-catch in Java?
try {
// code
} catch(Exception e) {
// handle
} ??? {
// cleanup
}Solution
Step 1: Recall Java exception syntax
Java uses the keywordfinallyto define the block that runs after try and catch.Step 2: Match the correct keyword
Among options, onlyfinallyis the valid keyword for this block.Final Answer:
finally -> Option AQuick Check:
finally keyword syntax = D [OK]
- Using 'final' instead of 'finally'
- Confusing with 'finalize' method
- Using invalid keywords like 'end'
What will be the output of the following Java code?
public class Test {
public static void main(String[] args) {
try {
System.out.print("Try-");
return;
} catch(Exception e) {
System.out.print("Catch-");
} finally {
System.out.print("Finally");
}
System.out.print("End");
}
}Solution
Step 1: Analyze try block execution
The try block prints "Try-" and then returns, so normally method would exit here.Step 2: Check finally block behavior with return
Even with return, finally block executes, printing "Finally" before method exits.Step 3: Confirm code after finally
Code after finally (System.out.print("End")) is unreachable due to return, so not executed.Final Answer:
Try-Finally -> Option DQuick Check:
finally runs even after return = C [OK]
- Assuming code after finally runs after return
- Thinking catch block runs without exception
- Ignoring finally block execution
Identify the error in the following code snippet:
try {
int a = 5 / 0;
} finally {
System.out.println("Cleanup");
}Solution
Step 1: Check try-finally syntax rules
Java allows try-finally without catch; try must be followed by catch or/and finally.Step 2: Analyze exception handling
Division by zero throws ArithmeticException at runtime, finally executes cleanup, then exception propagates to caller.Step 3: Confirm no error
The code compiles and runs validly (prints "Cleanup" before propagating exception); no syntax or structural error.Final Answer:
No error, code is valid -> Option AQuick Check:
try-finally valid without catch = D [OK]
- Thinking finally requires catch block
- Confusing runtime exception with syntax error
- Believing finally alone causes compile error
Consider this method:
public static int test() {
try {
System.out.print("Try-");
throw new RuntimeException();
} catch(RuntimeException e) {
System.out.print("Catch-");
return 1;
} finally {
System.out.print("Finally-");
return 2;
}
}What will System.out.print(test()); output?
Solution
Step 1: Trace try block execution
Try prints "Try-" then throws RuntimeException.Step 2: Catch block handles exception
Catch prints "Catch-" and returns 1, but return is not final yet.Step 3: finally block overrides return
Finally prints "Finally-" and returns 2, overriding previous return 1.Step 4: Combine printed output and return value
Printed output is "Try-Catch-Finally-" and method returns 2, so print(test()) outputs "2" after prints.Final Answer:
Try-Catch-Finally-2 -> Option BQuick Check:
finally return overrides catch return = A [OK]
- Ignoring finally return overriding catch return
- Assuming catch return is final
- Missing printed output before return
