Bird
Raised Fist0
Pythonprogramming~10 mins

Custom error messages in Python - Step-by-Step Execution

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
Concept Flow - Custom error messages
Start
Run code
Error occurs?
NoContinue normal flow
Yes
Raise error with custom message
Catch error (optional)
Show custom error message
End
The program runs code and if an error happens, it raises a custom message to explain what went wrong.
Execution Sample
Python
def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero!")
    return a / b

result = divide(10, 0)
This code tries to divide 10 by 0 and raises a custom error message instead of crashing silently.
Execution Table
StepActionConditionResultOutput/Error
1Call divide(10, 0)b == 0?TrueRaise ValueError
2Raise errorN/AError raised with message"Cannot divide by zero!"
3Program stops or error caughtN/AError message shownValueError: Cannot divide by zero!
💡 Error raised because divisor b is zero, stopping normal execution
Variable Tracker
VariableStartAfter Step 1After Step 2Final
aN/A101010
bN/A000
resultN/AN/AN/ANo value due to error
Key Moments - 3 Insights
Why does the program stop after raising the error?
Because raising an error interrupts normal flow immediately, as shown in execution_table step 2, so no further code runs unless the error is caught.
What happens if the condition b == 0 is False?
The function returns the division result normally without raising an error, continuing the program flow.
Can we change the error message to be more helpful?
Yes, the message inside raise ValueError(...) can be any string to explain the problem clearly, as seen in the custom message "Cannot divide by zero!".
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the condition checked at step 1?
Ab == 0
Ba == 0
Cresult == 0
Da / b == 0
💡 Hint
Check the 'Condition' column in execution_table row 1
At which step does the program raise the custom error message?
AStep 1
BStep 2
CStep 3
DNo error is raised
💡 Hint
Look at the 'Action' and 'Result' columns in execution_table row 2
If we change b to 2, what would happen in the execution_table?
AError raised at step 2
BProgram stops immediately
CCondition b == 0 is False, function returns result
DError message changes automatically
💡 Hint
Refer to key_moments about condition being False and normal return
Concept Snapshot
Custom error messages in Python:
Use raise with an error type and a string message.
Example: raise ValueError("message")
This stops code and shows your message.
Helps explain problems clearly.
Can be caught with try-except to handle errors.
Full Transcript
This visual trace shows how custom error messages work in Python. The code calls a function divide(10, 0). It checks if the divisor b is zero. Since it is, the program raises a ValueError with the message "Cannot divide by zero!". This stops the program unless the error is caught. Variables a and b hold 10 and 0 respectively. The result variable never gets a value because the error stops execution. Key moments explain why the program stops and how the message helps. The quiz asks about the condition checked, when the error is raised, and what happens if b changes. The snapshot summarizes how to use raise with a message to make errors clear and helpful.

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