Существуют исключения, позволяющие обрабатывать исключения , которые могут избежать сбоев, но в более общем случае предотвращают нежелательное или непредсказуемое поведение системы. Например, если время подключения моей программы к базе данных истекает, это обычно не приводит к сбою системы, но если я зависел от данных из базы данных, исключение может позволить мне трактовать эту ситуацию без данных иначе, чем обычно.
Скажем, по умолчанию моя программа отображает страницу данных, основанную на том, что было возвращено из базы данных - ну дерьмо, у меня нет данных. Вместо представления испорченного представления или продолжения потенциально недопустимой операции я могу перехватить это исключение и вернуться к другой базе данных, прочитать локальные данные, запросить данные у пользователя или иным образом вернуть пользователя или систему в безопасное состояние (предположительно одно что не сразу вызовет такое же исключение!)
Кроме того, в системах, где пользовательский ввод может быть причиной / решением проблемы, исключения могут дать пользователю подробную и полезную информацию о проблеме. Вместо слишком распространенного «Необработанное исключение произошло в ...» или «Запугивающее сообщение об ошибке прямо из SQL» вы можете сказать пользователю что-нибудь полезное или хотя бы понятное, например «Не удалось подключиться к ресурсу B.»