Page Contents
What is exception handling?
Exception handling in Python is a way to manage and respond to runtime errors. When an error occurs, Python typically stops and generates an exception message. Exception handling allows you to catch these exceptions and handle them gracefully, preventing your program from crashing.
Basic structure of exception handling
The basic structure of exception handling in Python uses try, except, else, and finally blocks:
tryblock: The code that might cause an exception is placed inside thetryblock.exceptblock: This block catches the exception and executes code to handle it.elseblock: If no exceptions are raised, the code inside theelseblock is executed.finallyblock: This block is executed no matter what, even if an exception was raised or not. It is typically used for cleanup actions.
Let’s see a simple example.
try:
# Code that might cause an exception
result = 100 / 0
except ZeroDivisionError as e:
# Code to handle the exception
print("Cannot divide by 0. Exception message: ", e)
else:
# Code to execute if no exception occurs
print("The result is:", result)
finally:
# Code to execute no matter what
print("Execution completed.")
#Output
Cannot divide by 0. Exception message: division by zero
Execution completed.
Handling multiple exceptions
You can have multiple except blocks to handle different kinds of exceptions:
try:
count = "Prakash Chauhan"
result = int(count)
except (ValueError, ZeroDivisionError) as e:
# Code to handle ValueError and ZeroDivisionError.
print("Exception Occurred: ", e)
except Exception as e:
# Code to handle any other exceptions.
print("An unexpected error occurred:", e)
else:
# Code to execute if no exception occurs
print("The result is:", result)
finally:
# Code to execute no matter what
print("Execution completed.")
# Output
Exception Occurred: invalid literal for int() with base 10: 'Prakash Chauhan'
Execution completed.
How to create custom exception in python?
You can define your own custom exceptions by creating a new class that inherits from the built-in Exception class. This allows you to create exceptions that are specific to your application’s needs and can provide more meaningful error messages or handle specific error conditions in a customized way.
Here’s a basic example of how to create and use a custom exception:
class CalculationError(Exception):
"""Custom exception class for specific error conditions."""
def __init__(self, message, *value):
super().__init__(message)
self.message = message
self.value = value
def divide(x, y):
if x < 0:
raise CalculationError("Negative no. not allowed.", x,y)
elif y == 0:
raise CalculationError("Can not divide by 0", x,y)
else:
return x / y
try:
x = int(input("Enter Numerator..."))
y = int(input("Enter Denominator..."))
print("Output: ",divide(x, y))
except CalculationError as e:
print(f"Input Error: {e.message}, Input Value: {e.value}")
finally:
print("Finally block.")
# Output : Success Scenario.
Enter Numerator...100
Enter Denominator...2
Output: 50.0
Finally block.
# Output : Taking numerator as -1.
Enter Numerator...-1
Enter Denominator...100
Input Error: Negative no. not allowed., Input Value: (-1, 100)
Finally block.
# Output : Taking denominator as -1.
Enter Numerator...100
Enter Denominator...0
Input Error: Can not divide by 0, Input Value: (100, 0)
Finally block.