Bird
Raised Fist0
Pythonprogramming~5 mins

Creating exception classes in Python - Quick Revision & Summary

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 creating custom exception classes in Python?
Custom exception classes help you handle specific errors in your program clearly and separately from built-in exceptions. They make your code easier to understand and debug.
Click to reveal answer
beginner
How do you define a simple custom exception class in Python?
You create a new class that inherits from the built-in <code>Exception</code> class. For example:<br><pre>class MyError(Exception):
    pass</pre>
Click to reveal answer
intermediate
Why might you add an __init__ method to a custom exception class?
To accept and store extra information about the error, like a message or error code, which you can use later when handling or displaying the error.
Click to reveal answer
intermediate
What is the benefit of overriding the __str__ method in a custom exception?
It lets you control the error message shown when the exception is printed or converted to a string, making error messages clearer and more helpful.
Click to reveal answer
beginner
Can custom exceptions be caught using a general except Exception: block?
Yes, because custom exceptions inherit from Exception, they can be caught by a general exception handler, but catching them specifically is better for precise error handling.
Click to reveal answer
Which class should a custom exception usually inherit from?
AException
Bobject
CBaseException
DError
What keyword is used to create a new exception class in Python?
Adef
Bclass
Cexception
Draise
What does the pass statement do inside a custom exception class?
AHandles the exception
BRaises the exception
CImports a module
DDefines an empty class body
Why override the __str__ method in a custom exception?
ATo change how the exception is printed
BTo stop the exception from being raised
CTo inherit from Exception
DTo catch the exception
Which statement raises a custom exception named MyError?
Athrow MyError()
Braise new MyError()
Craise MyError()
Dthrow new MyError()
Explain how to create a custom exception class and why it is useful.
Think about how you want to catch and describe special errors in your program.
You got /4 concepts.
    Describe how you can add extra information to a custom exception and show it when the error is printed.
    Consider how to pass and display details about the error.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the correct way to create a custom exception class in Python?
      easy
      A. exception MyError(Exception): pass
      B. def MyError(): raise Exception
      C. class MyError(Exception): pass
      D. class MyError: pass

      Solution

      1. Step 1: Understand how to define a class inheriting Exception

        Custom exceptions must inherit from the built-in Exception class to behave like errors.
      2. Step 2: Check syntax correctness

        class MyError(Exception): pass correctly defines a class named MyError inheriting from Exception with pass inside.
      3. Final Answer:

        class MyError(Exception): pass -> Option C
      4. Quick Check:

        Custom exception class = class MyError(Exception): pass [OK]
      Hint: Inherit from Exception to create custom errors [OK]
      Common Mistakes:
      • Not inheriting from Exception
      • Using def instead of class
      • Wrong keyword like 'exception' instead of 'class'
      2. Which of the following is the correct syntax to raise a custom exception named MyError?
      easy
      A. raise MyError()
      B. throw MyError()
      C. raise new MyError()
      D. throw new MyError()

      Solution

      1. Step 1: Recall the Python keyword to raise exceptions

        Python uses the keyword 'raise' to trigger exceptions, not 'throw'.
      2. Step 2: Check the syntax for raising a custom exception

        Correct syntax is 'raise MyError()' to create and raise the exception instance.
      3. Final Answer:

        raise MyError() -> Option A
      4. Quick Check:

        Raise custom error = raise MyError() [OK]
      Hint: Use 'raise' keyword followed by exception instance [OK]
      Common Mistakes:
      • Using 'throw' instead of 'raise'
      • Adding 'new' keyword like in other languages
      • Not calling the exception as a function
      3. What will be the output of this code?
      class MyError(Exception):
          pass
      
      try:
          raise MyError("Oops!")
      except MyError as e:
          print(e)
      medium
      A. Oops!
      B. MyError
      C. Exception
      D. No output

      Solution

      1. Step 1: Understand the raise statement with message

        The code raises MyError with the message 'Oops!'.
      2. Step 2: Catch the exception and print its message

        The except block catches MyError as 'e' and prints 'e', which outputs the message 'Oops!'.
      3. Final Answer:

        Oops! -> Option A
      4. Quick Check:

        Exception message prints = Oops! [OK]
      Hint: Exception instance prints its message string [OK]
      Common Mistakes:
      • Printing exception class name instead of message
      • Not catching the exception properly
      • Expecting no output
      4. Identify the error in this code snippet:
      class MyError(Exception):
          pass
      
      try:
          raise MyError
      except MyError:
          print("Caught error")
      medium
      A. Incorrect exception name in except block
      B. No error, code runs fine
      C. Syntax error in class definition
      D. Missing parentheses when raising MyError

      Solution

      1. Step 1: Check how the exception is raised

        In Python, it is valid to raise an exception class without parentheses if it has no __init__ arguments.
      2. Step 2: Identify the problem in the code

        The code uses 'raise MyError' without parentheses, which is valid and does not raise an error.
      3. Final Answer:

        No error, code runs fine -> Option B
      4. Quick Check:

        Raising exception class without parentheses is allowed [OK]
      Hint: Raising exception class without parentheses is valid if no arguments [OK]
      Common Mistakes:
      • Omitting parentheses after exception name
      • Mismatching exception names in except block
      • Incorrect class syntax
      5. You want to create a custom exception ValidationError that stores an error code along with the message. Which code correctly implements this?
      hard
      A. class ValidationError(Exception): def __init__(self, message): self.code = 0 super().__init__(message)
      B. class ValidationError(Exception): def __init__(self, message, code): self.message = message self.code = code
      C. class ValidationError(Exception): def __init__(self, code): super().__init__(code)
      D. class ValidationError(Exception): def __init__(self, message, code): super().__init__(message) self.code = code

      Solution

      1. Step 1: Understand how to extend Exception with extra attributes

        To add an error code, override __init__ and call super().__init__(message) to set the message properly.
      2. Step 2: Check which option correctly calls super().__init__ and stores code

        class ValidationError(Exception): def __init__(self, message, code): super().__init__(message) self.code = code calls super().__init__(message) and assigns self.code = code, correctly storing both.
      3. Final Answer:

        class ValidationError(Exception): def __init__(self, message, code): super().__init__(message) self.code = code -> Option D
      4. Quick Check:

        Call super().__init__(message) and store extra attributes [OK]
      Hint: Call super().__init__(message) to set message, then add code [OK]
      Common Mistakes:
      • Not calling super().__init__ for message
      • Assigning message without super call
      • Missing code attribute assignment