Python Error Handling Example Script
This page shows a small, runnable Python script that uses try, except, else, and finally together.
It is a practical example, not a theory page. The goal is to help you see what happens when:
- code runs successfully
- code raises an error
- some final code should always run
If you want a full explanation of the pattern itself, see using try, except, else, and finally in Python.
Quick example
Use this script to see the main parts of Python error handling in one place:
try:
number = int(input("Enter a number: "))
result = 10 / number
except ValueError:
print("Please enter a valid integer.")
except ZeroDivisionError:
print("You cannot divide by zero.")
else:
print("Result:", result)
finally:
print("Program finished.")
What it does:
- gets input from the user with
input() - converts that input to an integer with
int() - tries to divide
10by that number - handles two common errors
- prints a success message only when no error happens
- always prints a final message
What this example teaches
This script is useful because it shows a complete flow:
- It uses a full script, not just isolated syntax.
- It shows how
try,except,else, andfinallywork together. - It focuses on beginner-friendly runtime errors.
- It is small enough to run, test, and modify.
The full example script
Here is the same example again with comments:
try:
user_input = input("Enter a number: ")
number = int(user_input)
result = 10 / number
except ValueError:
print("Please enter a valid integer.")
except ZeroDivisionError:
print("You cannot divide by zero.")
else:
print("Result:", result)
finally:
print("Program finished.")
This script does the following:
- reads input from the user
- converts the input to an integer
- performs a calculation that may fail
- catches more than one specific error
- prints a success message only when no error happens
- runs final code every time
To run it, save it in a file such as script.py, then run:
python script.py
How the script works step by step
try
The try block contains code that might raise an exception.
try:
user_input = input("Enter a number: ")
number = int(user_input)
result = 10 / number
Possible problems here:
int(user_input)can fail if the user enters text likehello10 / numbercan fail ifnumberis0
except ValueError
This runs if Python cannot convert the input to an integer.
except ValueError:
print("Please enter a valid integer.")
Example input that causes this:
hello
If you have seen the message about invalid input to int(), see ValueError: invalid literal for int() with base 10.
except ZeroDivisionError
This runs if the user enters 0 and the script tries to divide by zero.
except ZeroDivisionError:
print("You cannot divide by zero.")
Related error page: ZeroDivisionError: division by zero.
else
The else block runs only if no exception happens in the try block.
else:
print("Result:", result)
This keeps the success code separate from the error-handling code. That makes the script easier to read.
finally
The finally block runs whether there is an error or not.
finally:
print("Program finished.")
This is useful for:
- cleanup code
- closing files
- closing database connections
- final status messages
Expected outputs for different inputs
Here is what you should see for different user inputs.
If the input is 2
Enter a number: 2
Result: 5.0
Program finished.
If the input is 0
Enter a number: 0
You cannot divide by zero.
Program finished.
If the input is hello
Enter a number: hello
Please enter a valid integer.
Program finished.
Why this example uses specific exceptions
This script catches ValueError and ZeroDivisionError on purpose.
That is better than using a broad except in this case because:
- specific exceptions are clearer
- they help you understand what went wrong
- they make debugging easier
- they avoid hiding unrelated bugs
For example, this is usually too broad for a beginner script:
try:
number = int(input("Enter a number: "))
result = 10 / number
except Exception:
print("Something went wrong.")
This catches many different errors, but the message is not very helpful.
A better version is:
try:
number = int(input("Enter a number: "))
result = 10 / number
except ValueError:
print("Please enter a valid integer.")
except ZeroDivisionError:
print("You cannot divide by zero.")
If you want more examples like this, see how to catch multiple exceptions in Python.
Common beginner mistakes in error handling
Here are some common problems beginners run into.
Using except without knowing which error is expected
If you do not know what error you are catching, your message may be too vague.
Bad:
except:
print("Error")
Better:
except ValueError:
print("Please enter a valid integer.")
Putting too much code inside the try block
Keep the risky code small.
Less clear:
try:
user_input = input("Enter a number: ")
number = int(user_input)
result = 10 / number
print("Calculation complete")
print("Saving result")
Better:
try:
user_input = input("Enter a number: ")
number = int(user_input)
result = 10 / number
except ValueError:
print("Please enter a valid integer.")
except ZeroDivisionError:
print("You cannot divide by zero.")
else:
print("Result:", result)
print("Calculation complete")
Catching the error but not fixing the real cause
Error handling should help you respond to a known problem. It should not hide mistakes in your code.
Using error handling when simple validation is easier
Sometimes input checks are simpler than relying only on exceptions.
For example, if you want to reject empty input before conversion, a check may help.
Forgetting that finally always runs
Even if an exception happens, the finally block still runs.
That is why this script always prints:
Program finished.
Common causes of problems in scripts like this
These issues often lead to confusing behavior:
- The user enters text when the script expects a number.
- The user enters
0before division. - The code catches exceptions too broadly.
- The
tryblock includes lines that are unrelated to the risky operation. - The script prints unclear error messages.
Good next steps after this example
After you run this script, try one of these next steps:
- Learn the full syntax in using try, except, else, and finally in Python.
- Practice the pattern in how to use try-except blocks in Python.
- Read more about Python errors and exceptions explained.
- Change the script so it accepts float input instead of integer input.
- Change the script so it handles file input instead of user input.
- Try adding your own
raisestatement in a new version of the script.
FAQ
Is this page about Python error handling theory or a practical example?
It is an example page. It focuses on one runnable script and explains how it behaves.
Should the example catch every possible exception?
No. It should catch only the specific exceptions that match the script, such as ValueError and ZeroDivisionError.
Why use else in this script?
It keeps the success code separate from the error-handling code. That makes the flow easier to read.
Why use finally in this script?
It shows code that always runs, which is useful for cleanup or final messages.
How is this different from the page about using try-except blocks?
That page explains the pattern. This page shows a complete example script using the pattern.
See also
- Python errors and exceptions explained
- Using try, except, else, and finally in Python
- How to handle exceptions in Python
- How to catch multiple exceptions in Python
- Python input() function explained
- Python int() function explained
Run the script a few times with different inputs like 2, 0, and hello. That is the fastest way to understand how each part works.