0
0
Pythonprogramming~20 mins

Extending built-in exceptions in Python - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Custom Exception Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of custom exception with additional attribute
What is the output of this code when the exception is caught and printed?
Python
class MyError(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

try:
    raise MyError("Oops!", 404)
except MyError as e:
    print(f"Error: {e}, Code: {e.code}")
AError: Oops!, Code: e.code
BError: MyError('Oops!'), Code: 404
CError: Oops!, Code: None
DError: Oops!, Code: 404
Attempts:
2 left
💡 Hint
Look at how the message and code are passed and accessed in the exception.
Predict Output
intermediate
2:00remaining
Output of overridden __str__ in custom exception
What will be printed when this code runs?
Python
class CustomError(Exception):
    def __init__(self, message, severity):
        super().__init__(message)
        self.severity = severity
    def __str__(self):
        return f"{self.args[0]} (Severity: {self.severity})"

try:
    raise CustomError("Failed operation", "High")
except CustomError as e:
    print(e)
AFailed operation (Severity: severity)
BFailed operation (Severity: High)
CFailed operation
DCustomError('Failed operation', 'High')
Attempts:
2 left
💡 Hint
The __str__ method controls how the exception is printed.
🔧 Debug
advanced
2:00remaining
Identify the error in custom exception initialization
This code tries to create a custom exception but raises an error. What is the cause?
Python
class BadError(Exception):
    def __init__(self, message, code):
        self.code = code

try:
    raise BadError("Error happened", 500)
except BadError as e:
    print(e)
AAttributeError because 'code' is missing
BSyntaxError due to missing colon
CTypeError because Exception __init__ is not called
DNo error, prints 'Error happened'
Attempts:
2 left
💡 Hint
Check if the base Exception class is properly initialized.
📝 Syntax
advanced
2:00remaining
Syntax error in custom exception definition
Which option contains a syntax error in defining a custom exception?
A
class MyException(Exception)
    def __init__(self, msg):
        super().__init__(msg)
B
class MyException(Exception):
    def __init__(self, msg):
        super().__init__(msg)
    def __str__(self):
        return self.args[0]
C
class MyException(Exception):
    pass
D
class MyException(Exception):
    def __init__(self, msg):
        super().__init__(msg)
Attempts:
2 left
💡 Hint
Check the class definition syntax carefully.
🚀 Application
expert
3:00remaining
Determine the output of nested custom exceptions
What is the output of this code snippet?
Python
class BaseError(Exception):
    def __init__(self, message):
        super().__init__(message)

class DerivedError(BaseError):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

try:
    try:
        raise DerivedError("Failure", 123)
    except DerivedError as e:
        raise BaseError(f"Wrapped: {e}") from e
except BaseError as e:
    print(e)
    print(type(e.__cause__))
A
Wrapped: Failure
<class '__main__.DerivedError'>
B
Wrapped: Failure
<class '__main__.BaseError'>
C
Failure
<class '__main__.BaseError'>
D
Failure
<class '__main__.DerivedError'>
Attempts:
2 left
💡 Hint
Look at how exception chaining with 'from' works and what __cause__ stores.