582 _____Часть IV. Новые возможности C++
ного обеспечения растет, а вот его надежность по-прежнему оставляет желать лучшего.
Такая ситуация сложилась благодаря уникальному стечению обстоятельств, которые словно сговорились усложнить жизнь программистов. Рынок побудил программное обеспечение совершить крутой эволюционный скачок, приведший к появлению таких продуктов, по сравнению с которыми программы десятилетней давности выглядят неандертальцами. Сегодняшние искушенные пользователи требуют привлекательных графических приложений, согласованно работающих и обеспечивающих немедленную и осязаемую отдачу. Да к тому же следует учесть, что пользователи при этом совершенно не хотят, чтобы их приложения распухали до необъятных размеров.
Следствием всех этих тенденций становится все возрастающая сложность прикладного программного обеспечения. Сегодняшние программы так сложны, что неудивительно, что они не слишком надежны. В конце концов они делают намного больше, чем раньше. При возрастании сложности вероятность того, что что-то пойдет неправильно, тоже возрастает. ^Сак правильно утверждает закон Мэрфи: "Если какая-то неприятность может случиться, она случается".
Проблема состоит в том, что вы не можете просто напечатать закон Мэрфи на коробке с программным обеспечением или в гарантийном обязательстве. Вы не сможете объяснить сердитому клиенту, что он потерял недельный труд из-за того, что мы живем в несовершенном мире (вообще-то, конечно, можете попробовать, но не говорите потом, что вас не предупреждали). Вместо этого надо сконцентрировать все усилия на том, чтобы новое программное обеспечение стало более надежным.
Обработка исключительных ситуаций:
веха на пути к надежности
Преодоление кризиса программирования идет различными путями, из которых с Borland C++ напрямую связаны только некоторые. Одни стратегии, такие как изучение хорошего стиля написания программ, являются просто дополнением обычного процесса обучения. Другие, такие как внедрение объектно-ориентированного программирования, требуют коренного пересмотра традиционных методов построения программ.
Обработка исключительных ситуаций в C++ попадает в эту последнюю категорию. Это относительно новый подход к старой проблеме: что программа должна делать, когда произойдет что-то непредвиденное.' Основные механизмы могут вас удивить (непосвященным может показаться, что обработка исключительных ситуаций попахивает всеми осуждаемым оператором goto), но не позволяйте себя обмануть. Исключительные ситуации являются изящным и эффективным путем борьбы со сложностью ваших программ и гарантией того, что эти программы станут более надежными.