Day 9: Exception Handling in Python
Topics to Cover:
- Try-Except Blocks
- Custom Exceptions
Introduction to Exception Handling
In programming, errors are inevitable. Python provides a robust mechanism to handle these errors through exception handling. This ensures that your program can gracefully handle unexpected situations without crashing.
Try-Except Blocks
The try
block lets you test a block of code for errors. The except
block lets you handle the error.
Syntax:
try:
# Code that might raise an exception
pass
except ExceptionType:
# Code to handle the exception
pass
Example: Handling Division by Zero:
try:
numerator = 10
denominator = 0
result = numerator / denominator
except ZeroDivisionError:
print("Error: Cannot divide by zero.")
In this example, attempting to divide by zero raises a ZeroDivisionError
, which is then handled in the except
block.
Custom Exceptions
Python allows you to define your own exceptions by creating a new class that is derived from the built-in Exception
class.
Creating a Custom Exception:
class InvalidInputError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
Using Custom Exceptions:
def get_positive_number():
number = int(input("Enter a positive number: "))
if number < 0:
raise InvalidInputError("Invalid input: Number must be positive.")
return number
try:
print(get_positive_number())
except InvalidInputError as e:
print(e)
In this scenario, if the user inputs a negative number, an InvalidInputError
is raised with a custom error message.
Potential Problems to Solve
Problem 1: Handling Division by Zero
Task: Write a program that handles division by zero.
Solution:
def divide_numbers(a, b):
try:
result = a / b
except ZeroDivisionError:
return "Error: Cannot divide by zero."
return result
numerator = float(input("Enter the numerator: "))
denominator = float(input("Enter the denominator: "))
print(divide_numbers(numerator, denominator))
Problem 2: Custom Exception for Invalid User Input
Task: Create a custom exception for invalid user input and raise it in an appropriate scenario.
Solution:
class InvalidInputError(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
def get_positive_number():
number = int(input("Enter a positive number: "))
if number < 0:
raise InvalidInputError("Invalid input: Number must be positive.")
return number
try:
print(get_positive_number())
except InvalidInputError as e:
print(e)
Conclusion
Exception handling is a crucial aspect of writing robust Python programs. By using try-except blocks and custom exceptions, you can handle errors gracefully and provide meaningful feedback to users, ensuring a smoother user experience.
Stay tuned for Day 10 of the python4ai 30-day series, where we’ll dive into more advanced topics and continue building our Python expertise!