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.
try:
10/0
except Exception as e:
print("other")