0% found this document useful (0 votes)
29 views32 pages

Lecture-47 (Exception Handling)

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 32

PYTHON

LECTURE 47
Today’s Agenda

• Exception Handling

• Introduction To Exception Handling


• Exception Handling Keywords
• Exception Handling Syntax
• Handling Multiple Exceptions
• Handling All Exceptions
What Is An Exception ?

 Exception are errors that occur at runtime .

 In other words , if our program encounters an abnormal


situation during it’s execution it raises an exception.

 For example,the statement


a=10/0
will generate an exception because Python has no way to
solve division by 0
What Python Does When
An Exception Occurs ?

 Whenever an exception occurs , Python does 2 things :

 It immediately terminates the code

 It displays the error message related to the exception in a


technical way

 Both the steps taken by Python cannot be considered user


friendly because
 Even if a statement generates exception , still other parts of the
program must get a chance to run

 The error message must be simpler for the user to understand


A Sample Code

a=int(input("Enter first no:"))


b=int(input("Enter second no:"))
c=a/b As we can observe , in the
second run the code
print("Div is",c) generated exception because
Python does not know how to
d=a+b handle division by 0.
Moreover it did not even
print("Sum is",d) calculated the sum of 10 and
Output: 0 which is possible
A Sample Code

a=int(input("Enter first no:"))


b=int(input("Enter second no:"))
c=a/b
In this case since it is not
print("Div is",c) possible for Python to covert
“2a” into an integer , so it
d=a+b generated an exception . But
the message it displays is too
print("Sum is",d) technical to understand
Output:
How To Handle
Such Situations ?

 If we want our program to behave normally , even if an


exception occurs , then we will have to apply
Exception Handling

 Exception handling is a mechanism which allows us to


handle errors gracefully while the program is running
instead of abruptly ending the program execution.
Exception Handling Keywords

 Python provides 5 keywords to perform Exception


Handling:

 try

 except

 else

 raise

 finally
Exception Handling Syntax

 Following is the syntax of a Python try-except-else block.

try: Remember !
In place of Exception I and
You do your operations here; Exception II , we have to use
the names of Exception
......................
classes in Python
except ExceptionI:
If there is ExceptionI, then execute this block.
except ExceptionII:
If there is ExceptionII, then execute this block.
......................
else:
If there is no exception then execute this block.
Improved Version
Of Previous Code

a=int(input("Enter first no:"))


b=int(input("Enter second no:"))
try:
c=a/b
print("Div is",c)
except ZeroDivisionError:
print("Denominator should not be 0")
d=a+b
print("Sum is",d)
Output:
Exception Hierarchy
Important Exception Classes

Exception Class Description

Exception Base class for all exceptions

ArithmeticError Raised when numeric calculations fails

Raised when a floating point


FloatingPointError
calculation fails
Raised when division or modulo by zero
ZeroDivisionError
takes place for all numeric types
Raised when result of an arithmetic
OverflowError
operation is too large to be represented
Raised when the imported module is not
ImportError
found in Python version < 3.6
Raised when the imported module is not
ModuleNotFoundError
found from Python version >=3.6
Important Exception Classes

Exception Class Description

LookUpError Raised when searching /lookup fails

Raised when the specified key is not


KeyError
found in the dictionary
Raised when index of a sequence is out
IndexError
of range
Raised when an identifier is not found
NameError
in the local or global namespace
Raise when we use a local variable in a
UnboundLocalError
function before declaring it.
Raised when a function or operation is
TypeError
applied to an object of incorrect type
Raised when a function gets argument of
ValueError
correct type but improper value
Important Exception Classes

Exception Class Description

Raised when a non-existent attribute is


AttributeError
referenced.
Raised when system operation causes
OSError
system related error.

FileNotFoundError Raised when a file is not present

Raised when we try to create a directory


FileExistsError
which is already present
Raised when trying to run an operation
PermissionError
without the adequate access rights.
SyntaxError Raised when there is an error in Python
syntax.
IndentationError Raised when indentation is not specified
properly.
A Very Important Point!

 Amongst all the exceptions mentioned in the previous slides, we


cannot handle SyntaxError exception , because it is raised by
Python even before the program starts execution

 Example:

a=int(input("Enter first no:"))


b=int(input("Enter second no:"))
try:
c=a/b
print("Div is",c)) Output:
except SyntaxError:
print("Wrong Syntax")
d=a+b
print("Sum is",d)
Handling Multiple Exception

 A try statement may have more than one except clause for
different exceptions.

 But at most one except clause will be executed


Point To Remember

 Also , we must remember that if we are handling parent


and child exception classes in except clause then the
parent exception must appear after child exception ,
otherwise child except will never get a chance to run
Guess The Output !

import math
try:

x=10/5
print(x)
ans=math.exp(3)
print(ans)

except ZeroDivisionError:
print("Division by 0 exception occurred!")
except ArithmeticError:
print("Numeric calculation failed!")
Output:
Guess The Output !

import math
try:

x=10/0
print(x)
ans=math.exp(20000)
print(ans)

except ZeroDivisionError:
print("Division by 0 exception occurred!")
except ArithmeticError:
print("Numeric calculation failed!")
Output:
Guess The Output !

import math
try:

x=10/5
print(x)
ans=math.exp(20000)
print(ans)

except ZeroDivisionError:
print("Division by 0 exception occurred!")
except ArithmeticError:
print("Numeric calculation failed!")
Output:
Guess The Output !

import math
try:

x=10/5
print(x)
ans=math.exp(20000)
print(ans)

except ArithmeticError:
print("Numeric calculation failed!")
except ZeroDivisionError:
print("Division by 0 exception occurred!")
Output:
Guess The Output !

import math
try:

x=10/0
print(x)
ans=math.exp(20000)
print(ans)

except ArithmeticError:
print("Numeric calculation failed!")
except ZeroDivisionError:
print("Division by 0 exception occurred!")
Output:
Exercise

 Write a program to ask the user to input 2 integers and


calculate and print their division. Make sure your program
behaves as follows:

 If the user enters a non integer value then ask him to enter only integers
 If denominator is 0 , then ask him to input non-zero denominator
 Repeat the process until correct input is given

 Only if the inputs are correct then display their division and
terminate the code
Sample Output
Solution

while(True):
try:
a=int(input("Input first no:"))
b=int(input("Input second no:"))
c=a/b
print("Div is ",c)
break;
except ValueError:
print("Please input integers only! Try again")
except ZeroDivisionError:
print("Please input non-zero denominator")
Single except,
Multiple Exception

 If we want to write a single except clause to handle


multiple exceptions , we can do this .

 For this we have to write names of all the exceptions


within parenthesis separated with comma after the
keyword except
Example

while(True):
try:
a=int(input("Input first no:"))
b=int(input("Input second no:"))
c=a/b
print("Div is ",c)
break;
except (ValueError,ZeroDivisionError):
print("Either input is incorrect or denominator is 0. Try
again!")
Sample Output
Handling All Exceptions

 We can write the keyword except without any exception


class name also .

 In this case for every exception this except clause will


run .

 The only problem will be that we will never know the type
of exception that has occurred!
Exception Handling Syntax

 Following is the syntax of a Python handle all


exception  block.

Notice , we have not provided


try: any name for the exception
You do your operations here;
......................
except :
For every kind of exception this block will execute
Example

while(True):
try:
a=int(input("Input first no:"))
b=int(input("Input second no:"))
c=a/b
print("Div is ",c)
break;
except:
print("Some problem occurred. Try again!")
Sample Output

You might also like