As you've noticed, there are many types of exceptions. Many specific exceptions are built into the language like IndexError and ZeroDivisionError, and (almost) all Exceptions count as the parent Exception type. What differentiates exceptions are their types, not their string descriptions. This is important to know when handling errors from imported modules.
If you're interested in the official documentation on all the built-in exceptions you can find a list here.
This code is simply raising an Exception with the text "zero division".
try:
raise Exception("zero division")
except ZeroDivisionError as e:
print("zero")
except Exception as e:
print("other")