Python довольно похож на Java в этом отношении. Но исключение Python следует сравнить с Java Throwable.
Поскольку Throwables доступны во всех видах - Error, RuntimeException и (проверено) Exception - то же самое можно сказать и о Python (хотя нет проверенных исключений).
Что касается языка, ошибка является исключительной, поэтому иерархия наследования не является странной.
Мне не особо нравится название Exception. Исключения используются не только для исключительных обстоятельств (например, ошибок), но и просто для выхода из потока управления. Потому что это то, что делает Исключение; он выпрыгивает из нормального потока управления в отмеченную точку. Немного похоже на гото, но более утонченно.
Тем не менее, каждый раз, когда у вас возникает ситуация, когда подходящее возвращаемое значение не может быть найдено, вы склонны использовать исключение. И в Python, и в Java.