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 derived

    • SyntaxError

      • IndentationError

    • ArithmeticError - math errors

      • OverflowError - occurs when a number is too large to store in a float datatype

      • ZeroDivisionError - occurs when the 2nd argument of division or modulo operation is 0

    • NameError - variable name not found in any scope

    • TypeError - use of unsupported data types with an operator

    • LookupError - errors with sequences or dictionaries

      • IndexError - invalid index is used

      • KeyError - invalid key is used

    • ImportError - occurs when an object is not defined in a module

      • ModuleNotFoundError - module to be imported cannot be found

Raising Exceptions#

  • Programmers can choose to raise an exception to halt the program

    • Either 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}")