Home » Posts tagged 'Python exception handling tutorial'
Tag Archives: Python exception handling tutorial
User Defined Exception in Python
In Python, By defining a new class that inherits from the built-in Exception class or one of its subclasses, you can define your own unique exceptions in Python. An illustration of how to define a user-defined exception in Python is as follows:
class CustomException(Exception):
def __init__(self, message):
self.message = message
super().__init__(self.message)
In the example above, we define a custom exception called CustomException
that inherits from the base Exception
class. We also override the __init__
method to allow for passing a custom error message when creating an instance of the exception.
Here’s how you can use the custom exception in your code:
def divide_numbers(a, b):
if b == 0:
raise CustomException("Division by zero is not allowed.")
return a / b
try:
result = divide_numbers(10, 0)
print("Result:", result)
except CustomException as e:
print("An error occurred:", e.message)
In the above code, the divide_numbers
function checks if the divisor b
is zero. If it is, it raises a CustomException
with a custom error message. In the try-except
block, we catch the CustomException
and print the error message.
Output:
An error occurred: Division by zero is not allowed.
By defining and using custom exceptions, you can create more specific and meaningful error handling in your Python programs.
Python Exception Handling
In Python, handling exceptions is a technique for managing any faults or unusual circumstances that may arise while a programme is being executed. It enables you to gracefully handle some errors rather than having the programme end suddenly by allowing you to catch and handle them.
Python provides a built-in mechanism for exception handling using the try-except
statement. The general syntax is as follows:
try:
# Code block where an exception might occur
except ExceptionType1:
# Code to handle the exception of type ExceptionType1
except ExceptionType2:
# Code to handle the exception of type ExceptionType2
...
except:
# Code to handle any other exceptions
else:
# Code to execute if no exception occurs
finally:
# Code that is always executed, regardless of whether an exception occurred or not
Here’s an explanation of the different parts:
- The
try
block contains the code where you anticipate an exception might occur. - The
except
block is used to catch and handle specific types of exceptions. You can have multipleexcept
blocks to handle different types of exceptions. ExceptionType1
,ExceptionType2
, and so on, represent the specific types of exceptions you want to handle. For example,ValueError
,TypeError
, orIOError
.- If an exception occurs in the
try
block and matches the specified exception type, the correspondingexcept
block is executed. If no exception occurs, theexcept
block is skipped. - You can have a generic
except
block without specifying the exception type. It will catch any exception that is not handled by the precedingexcept
blocks. However, it is generally recommended to catch specific exceptions whenever possible. - The
else
block is optional and contains code that will be executed if no exception occurs in thetry
block. - The
finally
block is also optional and contains code that will always be executed, regardless of whether an exception occurred or not. It is typically used for cleanup tasks, such as closing files or releasing resources.
Here’s an example to illustrate how exception handling works:
try:
num1 = int(input("Enter the numerator: "))
num2 = int(input("Enter the denominator: "))
result = num1 / num2
print("Result:", result)
except ValueError:
print("Invalid input. Please enter integers.")
except ZeroDivisionError:
print("Cannot divide by zero.")
except Exception as e:
print("An error occurred:", str(e))
else:
print("Division operation completed successfully.")
finally:
print("Exiting the program.")
In this example, if the user enters invalid input (non-integer values), a ValueError is raised and caught by the first except block. If the user enters zero as the denominator, a ZeroDivisionError is raised and caught by the second except block. Any other unhandled exceptions will be caught by the generic except block. The else block is executed if no exception occurs, and the finally block is always executed at the end, regardless of exceptions.
By using exception handling, you can ensure that your program handles errors gracefully, provides meaningful error messages, and continues executing even in the presence of exceptions