Bird
Raised Fist0
Pythonprogramming~10 mins

Custom error messages in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to raise a ValueError with a custom message.

Python
if age < 0:
    raise ValueError([1])
Drag options to blanks, or click blank then click option'
A"Age cannot be negative"
BAge cannot be negative
CValueError
Dprint("Error")
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting quotes around the message
Using a variable name instead of a string
Trying to print instead of raise
2fill in blank
medium

Complete the code to raise a TypeError with a custom message when input is not a string.

Python
if not isinstance(name, str):
    raise TypeError([1])
Drag options to blanks, or click blank then click option'
AInput must be a string
BTypeError
C"Input must be a string"
Dprint("Wrong type")
Attempts:
3 left
💡 Hint
Common Mistakes
Not using quotes for the message
Raising the wrong error type
Using print instead of raise
3fill in blank
hard

Fix the error in raising a custom error message for zero division.

Python
if denominator == 0:
    raise ZeroDivisionError([1])
Drag options to blanks, or click blank then click option'
Aprint("Error")
BZeroDivisionError
C0
D"Cannot divide by zero"
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the error class instead of a message
Using print instead of raise
Passing a number instead of a string
4fill in blank
hard

Fill both blanks to raise a custom error with a message including the invalid value.

Python
if score < 0 or score > 100:
    raise ValueError(f"Invalid score: [1]")

# Use the variable name in the message
invalid_value = [2]
Drag options to blanks, or click blank then click option'
Ascore
Bvalue
Dscore_value
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong variable name
Not using the variable inside the f-string
Assigning invalid_value to a non-existent variable
5fill in blank
hard

Fill all three blanks to raise a custom error with a message showing the invalid input and its type.

Python
if not isinstance(data, dict):
    raise TypeError(f"Expected dict but got [1] of type [2]")

actual_type = type([3]).__name__
Drag options to blanks, or click blank then click option'
Adata
Dinput
Attempts:
3 left
💡 Hint
Common Mistakes
Using different variable names in blanks
Not using f-string formatting
Forgetting to get the type name with __name__

Practice

(1/5)
1. What is the main purpose of using raise ValueError('Custom message') in Python?
easy
A. To print a warning message without stopping the program.
B. To stop the program and show a specific error message when a condition is not met.
C. To automatically fix errors in the code.
D. To ignore errors and continue running the program.

Solution

  1. Step 1: Understand the raise statement

    The raise keyword is used to stop the program and throw an error.
  2. Step 2: Purpose of custom messages

    Adding a message like 'Custom message' helps explain why the error happened.
  3. Final Answer:

    To stop the program and show a specific error message when a condition is not met. -> Option B
  4. Quick Check:

    raise with message = stop and explain error [OK]
Hint: Raise errors to stop and explain problems clearly [OK]
Common Mistakes:
  • Thinking raise only prints messages without stopping
  • Confusing raise with print or logging
  • Believing raise fixes errors automatically
2. Which of the following is the correct syntax to raise a custom error with message "Invalid input"?
easy
A. raise 'Invalid input' ValueError
B. throw ValueError('Invalid input')
C. error ValueError('Invalid input')
D. raise ValueError('Invalid input')

Solution

  1. Step 1: Identify the correct keyword

    In Python, raise is used to throw errors, not throw or error.
  2. Step 2: Correct order of error and message

    The syntax is raise ErrorType('message'), so the error type comes first, then the message in parentheses.
  3. Final Answer:

    raise ValueError('Invalid input') -> Option D
  4. Quick Check:

    raise + ErrorType('message') = correct syntax [OK]
Hint: Use raise ErrorType('message') to create custom errors [OK]
Common Mistakes:
  • Using throw instead of raise
  • Placing message before error type
  • Missing parentheses around the message
3. What will be the output of this code?
def check_age(age):
    if age < 18:
        raise ValueError('Age must be 18 or older')
    return 'Access granted'

print(check_age(16))
medium
A. Access granted
B. None
C. ValueError: Age must be 18 or older
D. SyntaxError

Solution

  1. Step 1: Check the condition in the function

    The function raises a ValueError if age is less than 18. Here, age is 16, so the error triggers.
  2. Step 2: Understand what happens on raise

    When the error is raised, the program stops and shows the error message instead of returning 'Access granted'.
  3. Final Answer:

    ValueError: Age must be 18 or older -> Option C
  4. Quick Check:

    raise triggers error output = ValueError message [OK]
Hint: If condition fails, raise stops and shows error message [OK]
Common Mistakes:
  • Expecting function to return 'Access granted' anyway
  • Confusing error message with print output
  • Thinking raise prints message but continues
4. Find the error in this code snippet:
def check_number(num):
    if num < 0:
        raise 'Negative number error'
    return 'Number is positive'

print(check_number(-5))
medium
A. You cannot raise a string directly; it must be an Exception type.
B. The raise statement is missing parentheses.
C. The function should return None instead of a string.
D. The if condition should be num > 0.

Solution

  1. Step 1: Check the raise statement

    The code tries to raise a string directly, which is not allowed in Python. Only Exception types can be raised.
  2. Step 2: Correct way to raise errors

    Use raise ValueError('message') or another Exception class, not a plain string.
  3. Final Answer:

    You cannot raise a string directly; it must be an Exception type. -> Option A
  4. Quick Check:

    raise must use Exception type, not string [OK]
Hint: Always raise Exception objects, not strings [OK]
Common Mistakes:
  • Raising strings instead of Exception classes
  • Forgetting to include parentheses with message
  • Changing condition incorrectly
5. You want to create a function validate_score(score) that raises a ValueError with the message "Score must be between 0 and 100" if the score is outside this range. Which code correctly implements this?
hard
A. def validate_score(score): if score < 0 or score > 100: raise ValueError('Score must be between 0 and 100') return 'Valid score'
B. def validate_score(score): if 0 <= score <= 100: raise ValueError('Score must be between 0 and 100') return 'Valid score'
C. def validate_score(score): if score < 0 and score > 100: raise ValueError('Score must be between 0 and 100') return 'Valid score'
D. def validate_score(score): if score == 0 or score == 100: raise ValueError('Score must be between 0 and 100') return 'Valid score'

Solution

  1. Step 1: Understand the valid range condition

    The score is valid if it is between 0 and 100 inclusive. So invalid means less than 0 or greater than 100.
  2. Step 2: Check the if condition logic

    def validate_score(score): if score < 0 or score > 100: raise ValueError('Score must be between 0 and 100') return 'Valid score' correctly uses if score < 0 or score > 100 to detect invalid scores and raise the error.
  3. Final Answer:

    def validate_score(score): if score < 0 or score > 100: raise ValueError('Score must be between 0 and 100') return 'Valid score' -> Option A
  4. Quick Check:

    Use or for invalid range, raise error if outside [OK]
Hint: Raise error if score is less than 0 or greater than 100 [OK]
Common Mistakes:
  • Using and instead of or in condition
  • Raising error for valid scores instead of invalid
  • Checking only equality instead of range