Exceptions#
Exceptions are a mechanism that the Python interpreter uses to identify errors in the code and notify the user
Exceptions are themselves defined as classes in Python
Ex: on encountering faulty syntax, the Python interpreter raises an exception of type
SyntaxError
a = 'string"
Cell In[1], line 1
a = 'string"
^
SyntaxError: unterminated string literal (detected at line 1)
Output of an exception includes:
Location info
Exception type and description
print(1 + '1')
Syntex errors are checked for before other kind of errors
The program is halted with an exception as soon as an error is encountered; rest of the code is ignored
Built-in Exceptions#
Exception
- base class from which all other exception types are derivedSyntaxError
IndentationError
ArithmeticError
- math errorsOverflowError
- occurs when a number is too large to store in afloat
datatypeZeroDivisionError
- occurs when the 2nd argument of division or modulo operation is 0
NameError
- variable name not found in any scopeTypeError
- use of unsupported data types with an operatorLookupError
- errors with sequences or dictionariesIndexError
- invalid index is usedKeyError
- invalid key is used
ImportError
- occurs when an object is not defined in a moduleModuleNotFoundError
- module to be imported cannot be found
…
Raising Exceptions#
Programmers can choose to
raise
an exception to halt the programEither built-in or user-defined derived exceptions can be used
def UpperCase(strInp):
if not isinstance(strInp, str):
raise TypeError("Expecting a str object")
return strInp.upper()
UpperCase('Abc')
UpperCase(12)
Code that adds numbers
Should check if each input is of a numeric type
def add(*args):
s = 0
for i in args:
if not isinstance(i, (int, float, complex, bool)):
raise TypeError("One of the inputs is not a number!")
s += i
return s
add(3, 2j)
add(1, [2])
Exception Handling#
Python provides the
try-except
statement to enable programmers to handle exceptions
A simple program with no exception handling:
i = int(input("Enter an integer: "))
print(f"Entered integer is {i}")
This will halt with a
ValueError
if the input provided is not an integer
With exception handling:
try:
i = int(input("Enter an integer: "))
except:
print("Invalid input.")
else:
print(f"Entered integer is {i}")