Что такое исключение? Это механизм который, грубо говоря, сообщает что в системе что-то пошло не так, код отработал не так как нужно
Зачем нужен перехват исключений (try ... catch)? для того что бы отловить ситуации в которых что-то пошло не так и как-то отреагировать на них, например постараться решить возникшую проблему
Зачем нужна иерархия исключений реализуемая через наследование? В системе может возникнуть множество ситуаций когда что-то пошло не так и на каждую из таких ситуация возможно будет необходима своя реакция. Вот именно для таких случаев и реализуется иерархия исключений, каждый класс исключения - описывает определенную ситуацию, а перехвачивая исключения соответственно ловит только определенный класс