Глава 22. Обработка исключительных ситуаций __ ______________581

Имейте в виду, что обработка исключительных ситуаций не является панацеей от всех бед. Если вы решили ее использовать, то вам придется затратить немало труда. Но будьте аккуратны, как и при обращении с любым мощным оружием, всегда есть опасность им злоупотребить или направить не в ту сторону.

Понятие исключительной ситуации

Borland C++ 5 поддерживает .многие мощные расширения, которые еще только будут воплощены в окончательном варианте стандарта ANSI C++. В Borland C++ 4.х уже были включены шаблоны (достаточно развитые для поддержания STL), обработка исключительных ситуаций и динамическая идентификация типов. Новая версия добавила к этим расширениям пространства имен, а также множество второстепенных усовершенствований, большей частью в стандартной библиотеке C++. Роль этих средств в разработке сложных и надежных программ на C++ трудно переоценить.

Специфика разработки программного обеспечения в несовершенном мире

Предположим, что ваш коллега утверждает, что он разработал большую программу, которая полностью свободна от ошибок и способна справиться с любой нештатной ситуацией, любым непредвиденным событием и вообще со всеми мыслимыми и немыслимыми неприятностями. Как бы вы на это отреагировали?

Вероятно, вы бы подняли вашего бедного заблуждающегося приятеля на смех: это утверждение настолько неправдоподобно, что даже забавно! В конце концов программисты — всего лишь люди, а человеку, как известно, свойственно ошибаться. Даже если бы человек, сделавший такое возмутительное заявление, был бы и вправду исключительным программистом, создание программы, которая может совладать с любой мыслимой проблемой, невозможно. Такая программа была бы непомерно огромной, причем изрядная ее часть предназначалась бы для обработки ситуаций, с которыми ей, скорее всего, никогда и не пришлось бы столкнуться.

Такое начало может показаться несколько обескураживающим. Если программисты заранее вынуждены смириться с тем, что их программы несовершенны и неспособны справиться с широким диапазоном потенциальных проблем, то не является ли программное обеспечение по природе своей ненадежным? Может быть и так.

Многие эксперты давно уже поговаривают о кризисе программирования. Несмотря на волнующие новые перспективы (например, объектно-ориентированное программирование) и новые производительные средства разработки (например Borland C++ 5, Delphi), стоимость разработки программ-