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 base class for all exceptions in .NET?
The base class for all exceptions in .NET is <strong>System.Exception</strong>. All other exceptions inherit from this class.
Click to reveal answer
intermediate
What is the difference between System.Exception and System.SystemException?
<code>System.Exception</code> is the root class for all exceptions. <code>System.SystemException</code> is a subclass used for exceptions thrown by the runtime, like <code>NullReferenceException</code> or <code>IndexOutOfRangeException</code>.
Click to reveal answer
intermediate
Name two common subclasses of System.SystemException.
Two common subclasses of System.SystemException are NullReferenceException and IndexOutOfRangeException. These are used for runtime errors.
Click to reveal answer
beginner
What is the purpose of System.IO.IOException in the exception hierarchy?
<code>System.IO.IOException</code> is a subclass of <code>System.Exception</code> that handles errors related to input/output operations, such as file access problems.
Click to reveal answer
beginner
Why should you catch specific exceptions instead of catching System.Exception directly?
Catching specific exceptions helps you handle different error types properly and avoid hiding unexpected errors. Catching System.Exception can make debugging harder and may catch exceptions you don't intend to handle.
Click to reveal answer
Which class is the direct parent of System.NullReferenceException?
ASystem.SystemException
BSystem.ApplicationException
CSystem.Exception
DSystem.IO.IOException
✗ Incorrect
System.NullReferenceException inherits from System.SystemException, which is for runtime exceptions.
Which exception class should you use for errors caused by invalid arguments?
ASystem.ArgumentException
BSystem.IO.IOException
CSystem.NullReferenceException
DSystem.InvalidOperationException
✗ Incorrect
System.ArgumentException is used when a method receives an invalid argument.
What is the root class of all exceptions in .NET?
ASystem.SystemException
BSystem.Exception
CSystem.ApplicationException
DSystem.Object
✗ Incorrect
System.Exception is the root class for all exceptions.
Which exception type is best for handling file read/write errors?
ASystem.InvalidOperationException
BSystem.NullReferenceException
CSystem.ArgumentException
DSystem.IO.IOException
✗ Incorrect
System.IO.IOException is designed for input/output errors like file access.
Why is catching System.Exception generally discouraged?
AIt catches too few exceptions
BIt only catches runtime exceptions
CIt can hide unexpected errors and make debugging harder
DIt is deprecated in .NET
✗ Incorrect
Catching System.Exception can hide unexpected errors and make debugging difficult.
Explain the main branches of the exception hierarchy in .NET and their purposes.
Think about runtime vs application exceptions.
You got /4 concepts.
Describe why it is important to catch specific exceptions rather than the base Exception class.
Consider what happens if you catch everything at once.
You got /4 concepts.
Practice
(1/5)
1. Which class is the base class for all exceptions in .NET?
easy
A. System.Error
B. System.Exception
C. System.ApplicationException
D. System.SystemException
Solution
Step 1: Understand the exception hierarchy
All exceptions in .NET inherit from a common base class to unify error handling.
Step 2: Identify the root base class
The root base class for all exceptions is System.Exception, from which other exceptions derive.
Final Answer:
System.Exception -> Option B
Quick Check:
Base exception class = System.Exception [OK]
Hint: Remember: All exceptions come from System.Exception [OK]
Common Mistakes:
Confusing System.SystemException as the base
Thinking System.ApplicationException is the root
Assuming System.Error exists in .NET
2. Which of the following is the correct syntax to catch a specific exception type ArgumentNullException in C#?
easy
A. catch (ArgumentNullException e) { }
B. catch ArgumentNullException (e) { }
C. catch (Exception e) { }
D. catch ArgumentNullException { }
Solution
Step 1: Recall catch block syntax
In C#, to catch a specific exception, use catch (ExceptionType variable) syntax.
Step 2: Match the correct syntax for ArgumentNullException
The correct syntax is catch (ArgumentNullException e) { }, which declares the exception type and variable.
Accessing index 5 in an array of size 2 throws IndexOutOfRangeException.
Step 2: Check which catch block handles it
The first catch block specifically catches IndexOutOfRangeException, so it runs and prints "Index error caught".
Final Answer:
Index error caught -> Option D
Quick Check:
Specific catch runs before general [OK]
Hint: Specific exceptions catch before general ones [OK]
Common Mistakes:
Thinking general Exception catch runs first
Assuming program crashes without catch
Confusing IndexOutOfRangeException with ArgumentException
4. Identify the error in this code snippet:
try {
int x = int.Parse("abc");
} catch (FormatException) {
Console.WriteLine("Format error");
} catch {
Console.WriteLine("General error");
}
medium
A. Catch-all block must be last
B. Catch blocks order is incorrect
C. No error, code is correct
D. Missing exception variable in catch blocks
Solution
Step 1: Review catch block syntax
Catch blocks can omit the exception variable if not used, which is valid here.
Step 2: Check catch block order
The specific FormatException catch is before the general catch-all block, which is correct.
Final Answer:
No error, code is correct -> Option C
Quick Check:
Catch-all last and variable optional [OK]
Hint: Catch-all must be last; variable optional in catch [OK]
Common Mistakes:
Thinking catch-all must have variable
Placing catch-all before specific catch
Assuming variable is mandatory in catch
5. You want to catch all exceptions except NullReferenceException and handle them differently. Which approach correctly implements this in C#?
hard
A. Use a catch block for Exception and rethrow if NullReferenceException
B. Use a single catch block for Exception and check exception type inside
C. Use two catch blocks: one for NullReferenceException, one for Exception
D. Use a catch block for NullReferenceException only
Solution
Step 1: Understand the requirement
We want to handle all exceptions except NullReferenceException differently, so we must detect and exclude it.
Step 2: Evaluate approaches
Use a catch block for Exception and rethrow if NullReferenceException uses a general catch for Exception, then rethrows if the exception is NullReferenceException, effectively excluding it from handling.
Final Answer:
Use a catch block for Exception and rethrow if NullReferenceException -> Option A
Quick Check:
Rethrow to exclude specific exceptions [OK]
Hint: Rethrow specific exceptions inside general catch [OK]
Common Mistakes:
Catching NullReferenceException first but not rethrowing
Handling all exceptions in one catch without rethrow