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 extending built-in exceptions in Python?
Extending built-in exceptions allows you to create custom error types that behave like standard errors but can carry specific information or handle special cases in your program.
Click to reveal answer
beginner
How do you define a custom exception by extending a built-in exception?
You create a new class that inherits from a built-in exception class like Exception or ValueError, for example: <pre>class MyError(Exception):
pass</pre>
Click to reveal answer
intermediate
Why might you want to add an __init__ method to your custom exception?
Adding an __init__ method lets you store extra information about the error, like a message or error code, which can be accessed when handling the exception.
Click to reveal answer
intermediate
What does the following code do?<br><pre>class MyError(Exception):
def __init__(self, message, code):
super().__init__(message)
self.code = code</pre>
It defines a custom exception MyError that takes a message and a code. The message is passed to the base Exception class, and the code is stored as an attribute for extra error info.
Click to reveal answer
beginner
How do you raise and catch a custom exception?
You use the raise keyword to throw the exception and a try-except block to catch it:
Which built-in class should you usually inherit from to create a custom exception?
AException
Bobject
Cint
Dlist
✗ Incorrect
Custom exceptions should inherit from Exception or one of its subclasses to behave like standard errors.
What does the super() function do in a custom exception's __init__ method?
ACreates a new exception
BCalls the parent class's __init__ method
CRaises the exception
DPrints the error message
✗ Incorrect
super() calls the parent class's __init__ to properly initialize the base Exception part.
How can you add extra information to a custom exception?
ABy using global variables
BBy changing the built-in Exception class
CBy raising multiple exceptions
DBy defining additional attributes in the class
✗ Incorrect
You add extra attributes in your custom exception class to store additional error details.
What happens if you raise a custom exception but do not catch it?
AThe program continues silently
BThe exception is ignored
CThe program stops and shows a traceback
DThe exception is converted to a string
✗ Incorrect
Uncaught exceptions stop the program and print an error traceback.
Which keyword is used to raise a custom exception?
Araise
Bthrow
Ccatch
Dtry
✗ Incorrect
The raise keyword is used to throw exceptions in Python.
Explain how to create and use a custom exception in Python.
Think about making a new class and how to handle errors.
You got /4 concepts.
Why is it useful to extend built-in exceptions instead of using Exception directly?
Consider how different errors help you understand problems better.
You got /4 concepts.
Practice
(1/5)
1. What is the main reason to extend built-in exceptions in Python?
easy
A. To create custom error types that describe specific problems clearly
B. To make the program run faster
C. To avoid using try-except blocks
D. To automatically fix errors when they occur
Solution
Step 1: Understand the purpose of exceptions
Exceptions help signal errors or unusual situations in a program.
Step 2: Why extend built-in exceptions?
Extending allows creating specific error types that explain problems clearly and help debugging.
Final Answer:
To create custom error types that describe specific problems clearly -> Option A
Quick Check:
Custom exceptions = clearer error messages [OK]
Hint: Custom exceptions clarify errors, not speed or auto-fix [OK]
Common Mistakes:
Thinking extending exceptions speeds up code
Believing exceptions fix errors automatically
Confusing exceptions with avoiding try-except
2. Which of the following is the correct way to define a custom exception named MyError that extends ValueError?
easy
A. def MyError(ValueError): pass
B. class MyError(ValueError): pass
C. class MyError: ValueError
D. exception MyError(ValueError): pass
Solution
Step 1: Recognize class syntax for exceptions
Custom exceptions are classes that inherit from built-in exceptions.
Step 2: Check correct Python class definition
Use class MyError(ValueError): pass to extend ValueError properly.
Final Answer:
class MyError(ValueError): pass -> Option B
Quick Check:
Use class + inheritance syntax for exceptions [OK]
Hint: Use class keyword and inherit from built-in exception [OK]
Common Mistakes:
Using def instead of class
Wrong inheritance syntax
Using 'exception' keyword which doesn't exist
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. MyError
B. Exception
C. Oops!
D. No output
Solution
Step 1: Understand raising and catching custom exception
The code raises MyError with message 'Oops!'.
Step 2: What does print(e) show?
Printing the exception variable e shows the message passed during raise.
Final Answer:
Oops! -> Option C
Quick Check:
Exception message prints when caught and printed [OK]
Hint: Print exception object to see its message [OK]
Common Mistakes:
Printing exception class name instead of message
Expecting no output because of exception
Confusing exception type with message
4. Identify the error in this custom exception definition:
class CustomError(Exception):
def __init__(self, message):
print(message)
medium
A. Exception cannot be extended
B. Class name should be lowercase
C. print() cannot be used in __init__
D. Missing call to super().__init__(message) in __init__
Solution
Step 1: Check __init__ method in custom exception
Custom exceptions should call the parent Exception __init__ to set the message properly.
Step 2: Why call super().__init__(message)?
This ensures the message is stored and accessible like normal exceptions.
Final Answer:
Missing call to super().__init__(message) in __init__ -> Option D
Quick Check:
Always call super().__init__ in custom exception init [OK]
Hint: Call super().__init__ to set message in custom exceptions [OK]
Common Mistakes:
Forgetting super().__init__ call
Thinking print replaces message storage
Believing class names must be lowercase
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, code):
super().__init__(message)
self.code = code
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)
self.message = ''
D. class ValidationError(Exception):
def __init__(self, message):
super().__init__(message)
self.code = None
Solution
Step 1: Understand storing extra info in custom exceptions
We want to keep both message and code, so __init__ must accept both.
Step 2: Properly call super().__init__ with message and store code
class ValidationError(Exception):
def __init__(self, message, code):
super().__init__(message)
self.code = code calls super().__init__(message) to set message and saves code as attribute.
Final Answer:
class ValidationError(Exception):
def __init__(self, message, code):
super().__init__(message)
self.code = code -> Option A
Quick Check:
Call super with message, store extra attributes separately [OK]
Hint: Call super with message, save extra data as attributes [OK]