In the last tutorial, we learned about Python exceptions. We know that exceptions abnormally terminate the execution of a program.
This is why it is important to handle exceptions. In Python, we use the
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
0 blockPython try...except Block
The
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
0 block is used to handle exceptions in Python. Here's the syntax of try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
0 block:try:
# code that may cause exception
except:
# code to run when exception occurs
Here, we have placed the code that might generate an exception inside the
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block. Every try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block is followed by an try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block.When an exception occurs, it is caught by the
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block. The try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block cannot be used without the try block.Example: Exception Handling Using try...except
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
In the example, we are trying to divide a number by 0. Here, this code generates an exception.
To handle the exception, we have put the code,
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
8 inside the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block. Now when an exception occurs, the rest of the code inside the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block is skipped.The
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block catches the exception and statements inside the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block are executed.If none of the statements in the
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block generates an exception, the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block is skipped.Catching Specific Exceptions in Python
For each
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block, there can be zero or more try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 blocks. Multiple try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 blocks allow us to handle each exception differently.The argument type of each
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5 block indicates the type of exception that can be handled by it. For example,try:
even_numbers = [2,4,6,8]
print[even_numbers[5]]
except ZeroDivisionError:
print["Denominator cannot be 0."]
except IndexError:
print["Index Out of Bound."]
# Output: Index Out of Bound
In this example, we have created a list named even_numbers.
Since the list index starts from 0, the last element of the list is at index 3. Notice the statement,
print[even_numbers[5]]
Here, we are trying to access a value to the index 5. Hence,
try:
even_numbers = [2,4,6,8]
print[even_numbers[5]]
except ZeroDivisionError:
print["Denominator cannot be 0."]
except IndexError:
print["Index Out of Bound."]
# Output: Index Out of Bound
9 exception occurs.When the
try:
even_numbers = [2,4,6,8]
print[even_numbers[5]]
except ZeroDivisionError:
print["Denominator cannot be 0."]
except IndexError:
print["Index Out of Bound."]
# Output: Index Out of Bound
9 exception occurs in the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block,- The
2 exception is skipped.print[even_numbers[5]]
- The set of code inside the
9 exception is executed.try: even_numbers = [2,4,6,8] print[even_numbers[5]] except ZeroDivisionError: print["Denominator cannot be 0."] except IndexError: print["Index Out of Bound."] # Output: Index Out of Bound
Python try with else clause
In some situations, we might want to run a certain block of code if the code block inside
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 runs without any errors.For these cases, you can use the optional
print[even_numbers[5]]
5 keyword with the try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 statement.Let's look at an example:
# program to print the reciprocal of even numbers
try:
num = int[input["Enter a number: "]]
assert num % 2 == 0
except:
print["Not an even number!"]
else:
reciprocal = 1/num
print[reciprocal]
Output
If we pass an odd number:
Enter a number: 1 Not an even number!
If we pass an even number, the reciprocal is computed and displayed.
Enter a number: 4 0.25
However, if we pass 0, we get
print[even_numbers[5]]
2 as the code block inside print[even_numbers[5]]
5 is not handled by preceding try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
5.Enter a number: 0 Traceback [most recent call last]: File "", line 7, in reciprocal = 1/num ZeroDivisionError: division by zero
Note: Exceptions in the
print[even_numbers[5]]
5 clause are not handled by the preceding except clauses.Python try...finally
In Python, the
# program to print the reciprocal of even numbers
try:
num = int[input["Enter a number: "]]
assert num % 2 == 0
except:
print["Not an even number!"]
else:
reciprocal = 1/num
print[reciprocal]
1 block is always executed no matter whether there is an exception or not.The
# program to print the reciprocal of even numbers
try:
num = int[input["Enter a number: "]]
assert num % 2 == 0
except:
print["Not an even number!"]
else:
reciprocal = 1/num
print[reciprocal]
1 block is optional. And, for each try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block, there can be only one # program to print the reciprocal of even numbers
try:
num = int[input["Enter a number: "]]
assert num % 2 == 0
except:
print["Not an even number!"]
else:
reciprocal = 1/num
print[reciprocal]
1 block.Let's see an example,
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
finally:
print["This is finally block."]
Output
Error: Denominator cannot be 0. This is finally block.
In the above example, we are dividing a number by 0 inside the
try:
numerator = 10
denominator = 0
result = numerator/denominator
print[result]
except:
print["Error: Denominator cannot be 0."]
# Output: Error: Denominator cannot be 0.
3 block. Here, this code generates an exception.