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

When clause in catch 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 the when clause in a catch block in C#?
The when clause allows you to specify a condition that must be true for the catch block to handle the exception. It helps filter exceptions based on custom logic.
Click to reveal answer
beginner
How does the when clause improve exception handling?
It lets you catch exceptions only if certain conditions are met, making your error handling more precise and avoiding catching exceptions you don't want to handle there.
Click to reveal answer
beginner
Show a simple example of a catch block using a when clause.
Example:
try {
  // code that may throw
} catch (Exception ex) when (ex.Message.Contains("timeout")) {
  // handle timeout exceptions only
}
Click to reveal answer
intermediate
Can multiple catch blocks use when clauses in the same try statement?
Yes, you can have multiple catch blocks with different when conditions to handle different cases of exceptions separately.
Click to reveal answer
intermediate
What happens if the when condition evaluates to false in a catch block?
If the when condition is false, the catch block is skipped, and the runtime looks for another matching catch block or rethrows the exception if none match.
Click to reveal answer
What does the when clause in a catch block do?
AThrows a new exception
BCatches all exceptions unconditionally
CFilters exceptions based on a condition
DTerminates the program immediately
Which of these is a valid use of when in a catch block?
Acatch (Exception ex) where (ex.Message.Contains("error"))
Bcatch when (ex.Message.Contains("error"))
Ccatch (Exception ex) if (ex.Message.Contains("error"))
Dcatch (Exception ex) when (ex.Message.Contains("error"))
If a when condition is false, what happens?
AThe program crashes
BThe <code>catch</code> block is skipped
CThe exception is ignored
DThe <code>catch</code> block runs anyway
Can you have multiple catch blocks with different when clauses?
AYes, to handle different exception cases
BNo, only one <code>catch</code> block can have a <code>when</code> clause
COnly if they catch the same exception type
DOnly if they are nested
Which C# version introduced the when clause in catch blocks?
AC# 6.0
BC# 5.0
CC# 7.0
DC# 8.0
Explain how the when clause works in a catch block and why it is useful.
Think about how you might want to catch only specific cases of an error.
You got /3 concepts.
    Write a simple C# code snippet using a catch block with a when clause to handle exceptions with a specific message.
    Use <code>ex.Message.Contains("text")</code> inside the <code>when</code> clause.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What does the when clause do in a catch block in C#?

      easy
      A. It adds a condition to run the catch block only if the condition is true.
      B. It defines a new exception type to catch.
      C. It skips the catch block entirely.
      D. It makes the catch block run before the try block.

      Solution

      1. Step 1: Understand the purpose of the when clause

        The when clause adds a condition to a catch block.
      2. Step 2: Effect of the when clause in exception handling

        The catch block runs only if the condition after when is true, otherwise it skips.
      3. Final Answer:

        It adds a condition to run the catch block only if the condition is true. -> Option A
      4. Quick Check:

        when clause = conditional catch [OK]
      Hint: when clause filters catch by condition [OK]
      Common Mistakes:
      • Thinking when defines a new exception type
      • Assuming catch runs always regardless of when
      • Confusing when with finally block
      2.

      Which of the following is the correct syntax to use a when clause in a catch block?

      try {
          // code
      } catch (Exception ex) _____ {
          // handle
      }
      easy
      A. while (ex.Message.Contains("error"))
      B. if (ex.Message.Contains("error"))
      C. where (ex.Message.Contains("error"))
      D. when (ex.Message.Contains("error"))

      Solution

      1. Step 1: Recall the correct keyword for condition in catch

        The correct keyword to add a condition in catch is when.
      2. Step 2: Match the syntax with the options

        Only when (ex.Message.Contains("error")) uses when correctly with the condition.
      3. Final Answer:

        when (ex.Message.Contains("error")) -> Option D
      4. Quick Check:

        Use 'when' keyword for catch condition [OK]
      Hint: Use 'when' keyword, not if/where/while in catch [OK]
      Common Mistakes:
      • Using if instead of when in catch
      • Confusing when with where or while
      • Missing parentheses after when
      3.

      What will be the output of this code?

      try {
          throw new InvalidOperationException("Invalid operation");
      } catch (InvalidOperationException ex) when (ex.Message.Contains("Invalid")) {
          Console.WriteLine("Caught invalid operation");
      } catch (Exception) {
          Console.WriteLine("Caught general exception");
      }
      medium
      A. Caught general exception
      B. Caught invalid operation
      C. No output
      D. Runtime error

      Solution

      1. Step 1: Identify the thrown exception and matching catch

        The code throws InvalidOperationException with message containing "Invalid".
      2. Step 2: Check the when condition in the first catch

        The first catch has a when clause checking if message contains "Invalid" which is true, so it runs.
      3. Final Answer:

        Caught invalid operation -> Option B
      4. Quick Check:

        when condition true runs first catch [OK]
      Hint: Check exception type and when condition carefully [OK]
      Common Mistakes:
      • Ignoring the when condition and picking second catch
      • Assuming no output if when is used
      • Confusing exception types
      4.

      Find the error in this code snippet:

      try {
          // some code
      } catch (Exception ex) when ex.Message == "Error" {
          Console.WriteLine("Error caught");
      }
      medium
      A. catch block must not have a condition
      B. Cannot use when with Exception type
      C. Missing parentheses around the when condition
      D. Console.WriteLine is not allowed in catch

      Solution

      1. Step 1: Check syntax of when clause

        The condition after when must be enclosed in parentheses.
      2. Step 2: Identify the missing parentheses in the code

        The code uses when ex.Message == "Error" without parentheses, which is invalid syntax.
      3. Final Answer:

        Missing parentheses around the when condition -> Option C
      4. Quick Check:

        when condition needs parentheses [OK]
      Hint: Always put parentheses after when [OK]
      Common Mistakes:
      • Omitting parentheses around when condition
      • Thinking when can't be used with Exception
      • Believing catch can't have code inside
      5.

      Consider this code:

      try {
          throw new ArgumentNullException("param");
      } catch (ArgumentNullException ex) when (ex.ParamName == "param") {
          Console.WriteLine("Parameter error");
      } catch (ArgumentNullException ex) {
          Console.WriteLine("Other argument null error");
      }

      What will be printed and why?

      hard
      A. Parameter error, because the when condition matches the ParamName.
      B. Other argument null error, because when clause is ignored.
      C. No output, because exception is not caught.
      D. Runtime error due to duplicate catch blocks.

      Solution

      1. Step 1: Identify the thrown exception and its property

        The code throws ArgumentNullException with ParamName set to "param".
      2. Step 2: Check the when clause condition in the first catch

        The first catch has a when clause checking if ex.ParamName == "param", which is true, so this catch runs.
      3. Step 3: Understand catch block selection

        The second catch is ignored because the first matching catch with true when condition handles the exception.
      4. Final Answer:

        Parameter error, because the when condition matches the ParamName. -> Option A
      5. Quick Check:

        when true catches first matching block [OK]
      Hint: when filters catch; first true condition wins [OK]
      Common Mistakes:
      • Ignoring when condition and picking second catch
      • Thinking duplicate catch causes error
      • Assuming exception is uncaught