0
0
Pythonprogramming~20 mins

Creating exception classes in Python - Practice Exercises

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Exception Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of custom exception handling
What is the output of this code when the function is called?
Python
class MyError(Exception):
    pass

def test():
    try:
        raise MyError("Oops")
    except MyError as e:
        print(f"Caught: {e}")
    except Exception:
        print("General error")

test()
ASyntaxError
BGeneral error
CNo output
DCaught: Oops
Attempts:
2 left
💡 Hint
Look at which exception is raised and which except block catches it.
Predict Output
intermediate
2:00remaining
Output when subclass exception is raised
What will be printed when this code runs?
Python
class BaseError(Exception):
    pass

class SubError(BaseError):
    pass

try:
    raise SubError("Error happened")
except BaseError as e:
    print(f"Handled: {e}")
AUnhandled exception error
BHandled: Error happened
CHandled: SubError
DSyntaxError
Attempts:
2 left
💡 Hint
Remember subclass exceptions are caught by base class except blocks.
Predict Output
advanced
2:00remaining
Output of exception with custom __str__ method
What is the output of this code?
Python
class CustomError(Exception):
    def __init__(self, code):
        self.code = code
    def __str__(self):
        return f"Error code: {self.code}"

try:
    raise CustomError(404)
except CustomError as e:
    print(e)
AError code: 404
BCustomError object at <memory_address>
C404
DTypeError
Attempts:
2 left
💡 Hint
The __str__ method controls the string shown when printing the exception.
Predict Output
advanced
2:00remaining
Exception chaining output
What will this code print?
Python
class FirstError(Exception):
    pass

class SecondError(Exception):
    pass

try:
    try:
        raise FirstError("First")
    except FirstError as e:
        raise SecondError("Second") from e
except SecondError as e:
    print(f"Caught: {e}")
    print(f"Cause: {e.__cause__}")
A
Caught: Second
Cause: FirstError('First')
B
Caught: Second
Cause: None
C
Caught: Second
Cause: First
DAttributeError
Attempts:
2 left
💡 Hint
The 'from' keyword sets the __cause__ attribute to the original exception.
🧠 Conceptual
expert
3:00remaining
Correct way to create a custom exception with additional data
Which option correctly defines a custom exception class that stores an error code and message, and allows access to both after catching?
A
class MyError(Exception):
    def __init__(self, code, msg):
        super().__init__(msg)
        self.code = code
B
class MyError(Exception):
    def __init__(self, code, msg):
        self.code = code
        self.msg = msg
C
class MyError(Exception):
    def __init__(self, code, msg):
        Exception.__init__(self, code, msg)
        self.code = code
D
class MyError(Exception):
    def __init__(self, code, msg):
        super().__init__(code, msg)
        self.message = msg
Attempts:
2 left
💡 Hint
Remember to call the base Exception __init__ with the message for proper behavior.