> -- Alexey_Donskoy писал(а):
> Предлагаю здесь без лишних слов привести пару учебных примеров, на которых показать пользу или вред исключений.

Примеры, на мой взгляд, в этой области мало что докажут.

Исключения (exceptions) -- это особый механизм, которым просто так пренебрегать не стоит. При работе с аппаратурой известны два режима: (1) работа по готовности и (2) работа по прерыванию. Исключение можно рассматривать как программное прерывание. Исключение имеет плюсы и минусы, схожие с плюсами и минусами при работе по аппаратным прерываниям. Для начального обучения программированию, думаю, изучать исключения не стоит. Да и во многих прикладных проектах они могут принести больше вреда, нежели пользы. Вот если касаться системного ПО -- это совсем другое дело.

Исключения предназначены отнюдь не только для обработки ошибок. Они образуют своего рода сигнальную шину, по которой передаются сигналы о важных событиях, связанных с выполнением программного кода. Как правило, нестандартные/нештатные события, которые требуют соответствующего арбитража. Обрабатывающий блок не всегда способен принять решение на месте, нужно делегирование в вышестоящие инстанции. Делегирование обеспечивать по готовности (на уровне традиционных кодов ошибок) бывает крайне неудобно и неэффективно.

При делегировании важно обеспечивать ретрансляцию исключительных событий (ошибок) в термины вышестоящей инстанции (т.н. низкоуровневые и высокоуровневые исключения). Опять-таки, подобную ретрансляцию лучше осуществлять с помощью исключений (соотв. блоков обработки исключений).

Но надо понимать, что исключения еще более опасны, чем goto. Они могут приводить к таким наведенным эффектам, которые локализовать и нейтрализовать бывает крайне трудно. ASSERT в Обероне -- это компромисс. Это упрощенные исключения, позволяющие не потерять контроль над "сигнальной шиной". При желании можно, оставаясь в терминах ASSERT, обеспечить в языке полноценную обработку исключений. Но цена за это -- опасность возникновения ошибок иного рода и наведенных эффектов, вызванных самими исключениями.