Concrete Exceptions in Python

There are some common exceptions in python. These exceptions are usually raised in different programs. These may raise by the programmer explicitly, or the python interpreter can raise these type of exceptions implicitly. Some of these exceptions are − 
The AssertionError may raise, when an assert statement fails. In python there are some, we can also set some assert statement in our code. The assert statement always must be true. if the condition fails, it will raise AssertionError.
class MyClass:
   def __init__(self, x):
      self.x = x
      assert self.x > 50
 myObj = MyClass(5)
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-21-71785acdf821> in <module>()
      4         assert self.x > 50
      5 
----> 6 myObj = MyClass(5)

<ipython-input-21-71785acdf821> in __init__(self, x)
      2     def __init__(self, x):
      3         self.x = x
----> 4         assert self.x > 50
      5 
      6 myObj = MyClass(5)

AssertionError:

The attribute error may raise, when we will try to access some attribute of a class, but it is not present in it.
class point:
   def __init__(self, x=0, y=0):
      self.x = x
      self.y = y
        
   def getpoint(self):
      print('x= ' + str(self.x))
      print('y= ' + str(self.y))
      print('z= ' + str(self.z))
pt = point(10, 20)
pt.getpoint()
x= 10
y= 20
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-f64eb52b2192> in <module>()
     10 
     11 pt = point(10, 20)
---> 12 pt.getpoint()

<ipython-input-15-f64eb52b2192> in getpoint(self)
      7         print('x= ' + str(self.x))
      8         print('y= ' + str(self.y))
----> 9         print('z= ' + str(self.z))
     10 
     11 pt = point(10, 20)

AttributeError: 'point' object has no attribute 'z'

The ImportError may occur when the import statement is facing some problem to import some module. It can also be raised, when the package name to a from statement is correct, but there is no module found as specified name.
from math import abcd    def __init__(self, x=0, y=0):
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-23-ff4519a07c77> in <module>()
----> 1 from math import abcd

ImportError: cannot import name 'abcd'

It is a subclass of the ImportError. When a module is not located, this error may raise. It can also be raised when None is found in sys.modules.
import abcd
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-24-7b45aaa048eb> in <module>()
----> 1 import abcd

ModuleNotFoundError: No module named 'abcd'

The index error may raise when the subscript of a sequence (List, Tuple, Set etc) is out of range.
myList = [10, 20, 30, 40]
print(str(myList[5]))
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-29-a86bd85b04c9> in <module>()
      1 myList = [10, 20, 30, 40]
----> 2 print(str(myList[5]))

IndexError: list index out of range

The RecursionError is a runtime error. When the maximum recursion depth is exceeded, then it will raised.
def myFunction():
   myFunction()
myFunction()
---------------------------------------------------------------------------
RecursionError Traceback (most recent call last)
<ipython-input-39-8a59e0fb982f> in <module>()
      2     myFunction()
      3 
----> 4 myFunction()

<ipython-input-39-8a59e0fb982f> in myFunction()
      1 def myFunction():
----> 2     myFunction()
      3 
      4 myFunction()

... last 1 frames repeated, from the frame below ...

<ipython-input-39-8a59e0fb982f> in myFunction()
      1 def myFunction():
----> 2     myFunction()
      3 
      4 myFunction()

RecursionError: maximum recursion depth exceeded

In python, we can get the StopIteration error by the inbuilt method called next(). When one iterator has no further element, then the next() method will raise the StopIteration error.
myList = [10, 20, 30, 40]
myIter = iter(myList)
while True:
   print(next(myIter))
10
20
30
40
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
<ipython-input-42-e608e2162645> in <module>()
      2 myIter = iter(myList)
      3 while True:
----> 4     print(next(myIter))

StopIteration: 

When there are some invalid indentation in the python code, it will raise this kind of errors. It inherits the SyntaxError class of python.
for i in range(10):
   print("The value of i: " + str(i))
File "<ipython-input-44-d436d50bbdc8>", line 2
    print("The value of i: " + str(i))
        ^
IndentationError: expected an indented block

The TypeError may occur when an operation is performed on an object of inappropriate type. For example, if we provide a floating point number in array index, it will return a TypeError.
muList = [10, 20, 30, 40]
print(myList[1.25])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-46-e0a2a05cd4d4> in <module>()
      1 muList = [10, 20, 30, 40]
----> 2 print(myList[1.25])

TypeError: list indices must be integers or slices, not float

When there is a situation where the denominator is 0 (zero) for a division problem, it will raise ZeroDivisionError.
print(5/0)
---------------------------------------------------------------------------
ZeroDivisionError  Traceback (most recent call last)
<ipython-input-48-fad870a50e27> in <module>()
----> 1 print(5/0)

ZeroDivisionError: division by zero