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

Multiple catch blocks 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 multiple catch blocks in C#?
Multiple catch blocks allow a program to handle different types of exceptions separately, providing specific responses for each error type.
Click to reveal answer
beginner
How does C# decide which catch block to execute when an exception occurs?
C# checks each catch block in order and executes the first one that matches the type of the thrown exception or its base types.
Click to reveal answer
intermediate
Can you have a general catch block after specific ones? Why?
Yes, a general catch block (catch without specifying an exception type) can be placed last to catch any exceptions not handled by previous specific catch blocks.
Click to reveal answer
intermediate
What happens if no catch block matches the thrown exception?
If no catch block matches, the exception propagates up the call stack, potentially causing the program to terminate if unhandled.
Click to reveal answer
beginner
Show a simple example of multiple catch blocks in C#.
try { int[] numbers = {1, 2, 3}; Console.WriteLine(numbers[5]); } catch (IndexOutOfRangeException) { Console.WriteLine("Index is out of range."); } catch (Exception) { Console.WriteLine("Some other error occurred."); }
Click to reveal answer
What is the order of catch blocks when handling exceptions?
AFrom most general to most specific exception types
BAlphabetical order by exception name
CRandom order
DFrom most specific to most general exception types
What happens if a catch block for Exception is placed before a catch block for IndexOutOfRangeException?
AThe program will crash
BBoth catch blocks will execute
CThe IndexOutOfRangeException catch block will never be reached
DThe compiler will reorder the catch blocks automatically
Can you have multiple catch blocks for the same exception type?
AYes, but only if they have different variable names
BNo, each exception type can only appear once in catch blocks
CYes, catch blocks can be duplicated freely
DOnly if they are inside different try blocks
What is the role of a catch block without an exception type?
AIt catches any exception not caught by previous catch blocks
BIt catches only null reference exceptions
CIt is invalid syntax
DIt catches exceptions only in debug mode
If an exception is thrown but no catch block matches, what happens?
AThe exception propagates up the call stack
BThe program ignores the exception
CThe program automatically retries the operation
DThe exception is silently logged and discarded
Explain how multiple catch blocks work in C# and why their order matters.
Think about how you would catch different problems separately and why catching general problems first might cause issues.
You got /4 concepts.
    Write a simple C# try-catch example with at least two catch blocks for different exceptions.
    Use exceptions like IndexOutOfRangeException and Exception for general errors.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of using multiple catch blocks in C#?

      easy
      A. To avoid using try blocks
      B. To handle different types of exceptions separately
      C. To make the code run faster
      D. To declare multiple variables

      Solution

      1. Step 1: Understand the role of catch blocks

        catch blocks are used to handle errors that happen in the try block.
      2. Step 2: Recognize why multiple catch blocks are used

        Using multiple catch blocks lets you respond differently to different error types, making your program clearer and safer.
      3. Final Answer:

        To handle different types of exceptions separately -> Option B
      4. Quick Check:

        Multiple catch blocks = handle different exceptions [OK]
      Hint: Multiple catch blocks handle different errors separately [OK]
      Common Mistakes:
      • Thinking multiple catch blocks speed up code
      • Believing catch blocks replace try blocks
      • Using catch blocks to declare variables
      2.

      Which of the following is the correct syntax order for multiple catch blocks in C#?

      try { ... }
      catch (ArgumentNullException e) { ... }
      catch (Exception e) { ... }
      
      easy
      A. Specific exceptions first, general exceptions last
      B. General exceptions first, specific exceptions last
      C. Order does not matter
      D. Only one catch block is allowed

      Solution

      1. Step 1: Understand exception hierarchy

        Specific exceptions like ArgumentNullException inherit from general exceptions like Exception.
      2. Step 2: Order catch blocks correctly

        Place specific exceptions first so they catch their errors before the general catch block handles all others.
      3. Final Answer:

        Specific exceptions first, general exceptions last -> Option A
      4. Quick Check:

        Specific before general catch blocks [OK]
      Hint: Put specific exceptions before general ones in catch blocks [OK]
      Common Mistakes:
      • Placing general catch before specific causes unreachable code
      • Assuming catch order does not matter
      • Trying to use multiple catch blocks without try
      3.

      What will be the output of this C# code?

      try {
          int[] arr = new int[2];
          Console.WriteLine(arr[5]);
      } catch (IndexOutOfRangeException) {
          Console.WriteLine("Index error caught");
      } catch (Exception) {
          Console.WriteLine("General error caught");
      }
      medium
      A. No output, program crashes
      B. General error caught
      C. Index error caught
      D. Compilation error

      Solution

      1. Step 1: Identify the exception thrown

        Accessing arr[5] causes an IndexOutOfRangeException because the array size is 2.
      2. Step 2: Match exception to catch block

        The first catch block matches IndexOutOfRangeException, so it runs and prints "Index error caught".
      3. Final Answer:

        Index error caught -> Option C
      4. Quick Check:

        IndexOutOfRangeException triggers first catch [OK]
      Hint: Exception type matches first suitable catch block [OK]
      Common Mistakes:
      • Thinking general catch runs before specific
      • Assuming no exception occurs
      • Confusing exception types
      4.

      Find the error in this code snippet:

      try {
          int x = int.Parse("abc");
      } catch (Exception e) {
          Console.WriteLine("General error");
      } catch (FormatException e) {
          Console.WriteLine("Format error");
      }
      medium
      A. The FormatException catch block is unreachable
      B. Missing finally block
      C. Try block syntax is incorrect
      D. No error, code is correct

      Solution

      1. Step 1: Check catch block order

        The first catch block catches all Exception types, including FormatException.
      2. Step 2: Identify unreachable catch block

        Since Exception catch is first, the FormatException catch block can never run, causing a compile error.
      3. Final Answer:

        The FormatException catch block is unreachable -> Option A
      4. Quick Check:

        General catch before specific causes unreachable code [OK]
      Hint: Place specific catch blocks before general ones to avoid unreachable code [OK]
      Common Mistakes:
      • Putting general catch before specific
      • Ignoring unreachable code errors
      • Thinking finally block is mandatory
      5.

      You want to handle NullReferenceException and DivideByZeroException differently, but also catch any other exceptions generally. Which is the best order of catch blocks?

      try {
          // code that may throw exceptions
      } catch (___) {
          Console.WriteLine("Null reference error");
      } catch (___) {
          Console.WriteLine("Divide by zero error");
      } catch (___) {
          Console.WriteLine("Other error");
      }
      hard
      A. Exception, DivideByZeroException, NullReferenceException
      B. Exception, NullReferenceException, DivideByZeroException
      C. DivideByZeroException, Exception, NullReferenceException
      D. NullReferenceException, DivideByZeroException, Exception

      Solution

      1. Step 1: Identify specific exceptions

        NullReferenceException and DivideByZeroException are specific exceptions to catch first.
      2. Step 2: Place general exception last

        The general Exception catch block should come last to catch all other exceptions.
      3. Final Answer:

        NullReferenceException, DivideByZeroException, Exception -> Option D
      4. Quick Check:

        Specific exceptions first, general last [OK]
      Hint: Catch specific exceptions before general Exception last [OK]
      Common Mistakes:
      • Putting Exception catch first
      • Mixing order of specific exceptions
      • Omitting general catch block