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

Custom exception classes 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 a custom exception class in C#?
A custom exception class is a user-defined class that inherits from <code>Exception</code> or its subclasses to represent specific error conditions in your program.
Click to reveal answer
beginner
How do you define a basic custom exception class in C#?
You create a class that inherits from <code>Exception</code> and provide constructors, for example:<br><pre>public class MyException : Exception { public MyException(string message) : base(message) {} }</pre>
Click to reveal answer
intermediate
Why should you create custom exception classes instead of using general exceptions?
Custom exceptions help you clearly identify and handle specific error cases, making your code easier to read, debug, and maintain.
Click to reveal answer
beginner
Which base class do all custom exceptions in C# usually inherit from?
They usually inherit from the <code>Exception</code> class, which is the base class for all exceptions in C#.
Click to reveal answer
beginner
What is the purpose of calling base(message) in a custom exception constructor?
It passes the error message to the base <code>Exception</code> class so that the message can be accessed later when the exception is caught.
Click to reveal answer
Which keyword is used to create a custom exception class in C#?
Atry
Bexception
Cthrow
Dclass
What should a custom exception class inherit from?
ASystem.Exception
BSystem.Console
CSystem.String
DSystem.Object
Why do you call base(message) in a custom exception constructor?
ATo catch the exception
BTo initialize the base Exception with the error message
CTo throw the exception immediately
DTo log the error message
Which of these is a benefit of using custom exceptions?
AThey automatically fix bugs
BThey prevent exceptions from occurring
CThey make error handling more specific and clear
DThey replace the need for try-catch blocks
Which constructor is commonly included in a custom exception class?
AA constructor that takes a string message
BA constructor that returns void
CA constructor that takes an int
DA constructor that takes no parameters and does nothing
Explain how to create a custom exception class in C# and why it is useful.
Think about class inheritance and error clarity.
You got /4 concepts.
    Describe the role of the base Exception class when defining custom exceptions.
    Base class is the foundation for all exceptions.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main reason to create a custom exception class in C#?
      easy
      A. To automatically fix errors when they occur
      B. To make the program run faster
      C. To avoid using try-catch blocks
      D. To represent specific error conditions clearly in your program

      Solution

      1. Step 1: Understand the purpose of exceptions

        Exceptions represent errors or unexpected situations in a program.
      2. Step 2: Identify why custom exceptions are used

        Custom exceptions help describe specific problems clearly, making error handling easier and more meaningful.
      3. Final Answer:

        To represent specific error conditions clearly in your program -> Option D
      4. Quick Check:

        Custom exceptions clarify errors = A [OK]
      Hint: Custom exceptions explain specific errors clearly [OK]
      Common Mistakes:
      • Thinking custom exceptions improve speed
      • Believing they remove need for try-catch
      • Assuming they fix errors automatically
      2. Which of the following is the correct way to declare a custom exception class named MyException in C#?
      easy
      A. class MyException : Exception { public MyException(string message) : base(message) {} }
      B. class MyException { public MyException(string message) {} }
      C. class MyException : int { public MyException(string message) : base(message) {} }
      D. class MyException : Exception { public void MyException(string message) {} }

      Solution

      1. Step 1: Check inheritance from Exception

        Custom exceptions must inherit from Exception to behave like exceptions.
      2. Step 2: Verify constructor calls base constructor

        The constructor should call base(message) to pass the error message properly.
      3. Final Answer:

        class MyException : Exception { public MyException(string message) : base(message) {} } -> Option A
      4. Quick Check:

        Inherit Exception + call base constructor = A [OK]
      Hint: Inherit Exception and call base constructor for message [OK]
      Common Mistakes:
      • Not inheriting from Exception
      • Using wrong base class like int
      • Defining constructor as void method
      3. What will be the output of the following C# code?
      class MyException : Exception { public MyException(string message) : base(message) {} }
      try {
      throw new MyException("Error happened");
      } catch (MyException ex) {
      Console.WriteLine(ex.Message);
      }
      medium
      A. Exception caught
      B. Error happened
      C. MyException
      D. No output

      Solution

      1. Step 1: Understand the throw statement

        The code throws a MyException with message "Error happened".
      2. Step 2: Catch block prints exception message

        The catch block catches MyException and prints ex.Message, which is "Error happened".
      3. Final Answer:

        Error happened -> Option B
      4. Quick Check:

        Throw and catch prints message = C [OK]
      Hint: Catch prints exception message property [OK]
      Common Mistakes:
      • Expecting class name instead of message
      • Thinking catch block won't run
      • Assuming no output from exception
      4. Identify the error in this custom exception class declaration:
      class MyError : Exception {
      public MyError(string msg) {
      base(msg);
      }
      }
      medium
      A. The class must not inherit from Exception
      B. The constructor should be named differently from the class
      C. The constructor should call base(msg) using a colon, not inside the body
      D. The base class Exception does not accept a string parameter

      Solution

      1. Step 1: Check constructor syntax for base call

        In C#, calling the base class constructor must be done with a colon after the constructor signature, not inside the body.
      2. Step 2: Identify correct syntax

        The correct syntax is public MyError(string msg) : base(msg) {}, not calling base(msg); inside the constructor body.
      3. Final Answer:

        The constructor should call base(msg) using a colon, not inside the body -> Option C
      4. Quick Check:

        Base constructor call uses colon syntax = B [OK]
      Hint: Call base constructor with colon, not inside method body [OK]
      Common Mistakes:
      • Calling base constructor inside body instead of colon
      • Not inheriting from Exception
      • Misnaming constructor
      5. You want to create a custom exception InvalidAgeException that should be thrown when a user's age is less than 0 or greater than 120. Which of the following code snippets correctly defines and uses this exception?
      hard
      A. class InvalidAgeException : Exception { public InvalidAgeException(string msg) : base(msg) {} }
      void CheckAge(int age) { if(age < 0 || age > 120) throw new InvalidAgeException("Age is invalid"); }
      B. class InvalidAgeException { public InvalidAgeException(string msg) {} }
      void CheckAge(int age) { if(age < 0 || age > 120) throw new InvalidAgeException("Age is invalid"); }
      C. class InvalidAgeException : Exception { public void InvalidAgeException(string msg) {} }
      void CheckAge(int age) { if(age < 0 || age > 120) throw new InvalidAgeException("Age is invalid"); }
      D. class InvalidAgeException : Exception { public InvalidAgeException() {} }
      void CheckAge(int age) { if(age < 0 || age > 120) throw new InvalidAgeException(); }

      Solution

      1. Step 1: Verify custom exception class definition

        The class inherits from Exception and has a constructor calling base(msg) to pass the message.
      2. Step 2: Check usage in method

        The method throws the exception with a message when age is invalid, which matches the requirement.
      3. Final Answer:

        Correct class inheritance, constructor, and usage with message -> Option A
      4. Quick Check:

        Inherit Exception + throw with message = D [OK]
      Hint: Inherit Exception, add constructor, throw with message [OK]
      Common Mistakes:
      • Not inheriting from Exception
      • Defining constructor as void method
      • Missing message in exception constructor