Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Finally block behavior in C Sharp (C#) - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

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
Recall & Review
beginner
What is the purpose of a finally block in C#?
The finally block contains code that always runs after a try block, regardless of whether an exception was thrown or caught. It is used to clean up resources like files or database connections.
Click to reveal answer
beginner
When does the code inside a finally block execute?
The code inside a finally block executes after the try block finishes, whether an exception occurred or not, and even if a catch block handled the exception.
Click to reveal answer
intermediate
Can a finally block prevent an exception from propagating?
No, a finally block cannot stop an exception from moving up the call stack. It runs after the try and catch blocks but does not catch or suppress exceptions itself.
Click to reveal answer
advanced
What happens if there is a return statement inside both try and finally blocks?
If both try and finally have return statements, the return in the finally block overrides the one in the try block. The method returns the value from finally.
Click to reveal answer
beginner
Why is it important to use finally blocks when working with resources like files or database connections?
Because finally blocks always run, they ensure resources are properly closed or released even if an error happens. This prevents resource leaks and keeps programs stable.
Click to reveal answer
When does the code inside a finally block run?
AOnly if a <code>catch</code> block exists
BAlways after the <code>try</code> block, no matter what
COnly if no exception is thrown
DOnly if an exception is thrown
Can a finally block catch exceptions?
ANo, it only runs code after <code>try</code> and <code>catch</code>
BYes, it catches exceptions automatically
CYes, but only if <code>catch</code> is missing
DNo, it only runs if no exception occurs
What happens if both try and finally blocks have return statements?
AThe <code>finally</code> block's return value is used
BBoth return values are combined
CThe <code>try</code> block's return value is used
DThe program throws an error
Why use a finally block when working with files?
ATo read the file contents
BTo open the file
CTo ensure the file closes even if errors happen
DTo ignore exceptions
If an exception is thrown and not caught, does the finally block still run?
AOnly if the exception is a specific type
BNo, it only runs if exceptions are caught
CNo, it only runs if no exception occurs
DYes, it always runs
Explain in your own words what a finally block does in C# exception handling.
Think about what happens after you try something that might fail.
You got /4 concepts.
    Describe what happens when both try and finally blocks contain return statements.
    Consider which return value the method actually uses.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the finally block in C# exception handling?
      easy
      A. To execute code regardless of whether an exception occurs or not
      B. To catch exceptions thrown in the try block
      C. To declare variables used in the try block
      D. To stop the program when an exception occurs

      Solution

      1. Step 1: Understand the role of finally

        The finally block runs after the try and catch blocks, no matter what happens.
      2. Step 2: Identify its purpose

        It is used to run cleanup code or important steps that must always execute, regardless of exceptions.
      3. Final Answer:

        To execute code regardless of whether an exception occurs or not -> Option A
      4. Quick Check:

        finally always runs [OK]
      Hint: Remember: finally always runs, no matter what [OK]
      Common Mistakes:
      • Confusing finally with catch block
      • Thinking finally only runs on exceptions
      • Believing finally can catch exceptions
      2. Which of the following is the correct syntax for using a finally block in C#?
      easy
      A. try { } catch { } finally { }
      B. try { } finally { } catch { }
      C. try { } catch { }
      D. finally { } try { } catch { }

      Solution

      1. Step 1: Recall correct order of blocks

        In C#, the order is try, then catch (optional), then finally (optional).
      2. Step 2: Match syntax

        Only try { } catch { } finally { } shows the correct order: try { } catch { } finally { }.
      3. Final Answer:

        try { } catch { } finally { } -> Option A
      4. Quick Check:

        Correct block order [OK]
      Hint: Remember order: try, catch, then finally [OK]
      Common Mistakes:
      • Placing finally before catch
      • Omitting try block
      • Using finally without try
      3. What will be the output of the following C# code?
      try {
          Console.WriteLine("Start");
          throw new Exception();
      } catch {
          Console.WriteLine("Caught");
      } finally {
          Console.WriteLine("Finally");
      }
      medium
      A. Start\nFinally
      B. Start\nCaught\nFinally
      C. Caught\nFinally
      D. Start\nCaught

      Solution

      1. Step 1: Trace the try block

        "Start" is printed, then an exception is thrown.
      2. Step 2: Catch and finally execution

        The exception is caught, so "Caught" is printed, then the finally block runs printing "Finally".
      3. Final Answer:

        Start\nCaught\nFinally -> Option B
      4. Quick Check:

        try prints Start, catch prints Caught, finally prints Finally [OK]
      Hint: Remember: finally runs after catch even if exception thrown [OK]
      Common Mistakes:
      • Ignoring catch block output
      • Thinking finally runs before catch
      • Missing the exception thrown in try
      4. Identify the error in this C# code snippet:
      try {
          Console.WriteLine("Hello");
      } finally {
          Console.WriteLine("Cleanup");
      } catch (Exception ex) {
          Console.WriteLine("Error");
      }
      medium
      A. The catch block must come after finally
      B. No error, code is correct
      C. You cannot use finally without catch
      D. The finally block must come after catch

      Solution

      1. Step 1: Check block order rules

        In C#, the finally block must come after all catch blocks.
      2. Step 2: Identify incorrect order

        The code places finally before catch, which is invalid syntax.
      3. Final Answer:

        The finally block must come after catch -> Option D
      4. Quick Check:

        finally after catch [OK]
      Hint: Remember: catch blocks come before finally [OK]
      Common Mistakes:
      • Placing finally before catch
      • Thinking finally can be before catch
      • Confusing order of blocks
      5. Consider this code:
      int result = 0;
      try {
          result = 10 / 0;
      } catch (DivideByZeroException) {
          result = 1;
      } finally {
          result = 2;
      }
      Console.WriteLine(result);

      What will be printed and why?
      hard
      A. 0, because division by zero stops execution before catch
      B. 1, because catch sets result to 1 and finally does not change it
      C. 2, because finally always runs and can overwrite result
      D. Exception thrown, program crashes

      Solution

      1. Step 1: Analyze exception and catch block

        Division by zero throws DivideByZeroException, caught by catch which sets result = 1.
      2. Step 2: Understand finally block effect

        The finally block runs after catch and sets result = 2, overwriting previous value.
      3. Final Answer:

        2, because finally always runs and can overwrite result -> Option C
      4. Quick Check:

        finally runs last and sets result = 2 [OK]
      Hint: finally runs last and can overwrite variables set earlier [OK]
      Common Mistakes:
      • Assuming catch value stays after finally
      • Thinking exception stops finally from running
      • Believing program crashes without output