Обработка ошибок и предупреждений
Одна из самых больших глупостей, на которые способны программы, — это выход,
когда они вполне могли бы продолжать работать. Это напоминает мне тот случай, когда
г:л семья жила на французской Ривьере, где дожди не слишком часты. Наш бульдог,
Ео.тыпой Босс, останавливался в дверях, высовывал нос наружу и шумно принюхивал-: в. Если он улавливал малейшие признаки дождя, то сразу возвращался домой.
Дело в том, что программы, подобно нашему бульдогу, иногда горячатся. ~ ;: едположим, ваша программа запускается, только обнаружив файл конфигурации. -"то будет, если файла конфигурации нет? Первый подход — выйти, что, конечно, будет габотать, но не создаст ли это других проблем? Существенно лучший подход — исполь-::зать стандартное действие. В этом примере стандартным действием могло бы быть . гс эражение диалогового окна, запрашивающего пользователя о том, стоит ли выбрать : ил конфигурации; иногда программа может сама создать стандартный файл, как г этом примере:
try
loadConfiguration (); zzzch(ConfigurationException ex) JreateDefaultConfiguration();
Здесь метод LoadConf iguration () находится в блоке try/catch, но блок catch nepe-■ -тывает только исключения Conf igurationException (встроенный тип исключения 1 = '. Если произойдет отказ Conf igurationException, то будет создана стандартная вонфигурация. Со стандартной конфигурацией программа вполне может продолжать : i: эту. Использование фильтрации исключений, если в методе LoadConf iguration () 'улет передано другое исключение, допускает, что его обработает некоторый обработ¬ал: исключений на более высоком уровне.
Когда вы обрабатываете ошибку, которая на самом деле скорее предупреждение,
■ ишо предпринять фильтрацию определенного исключения и реализовать соответ-
гвующий обработчик, который будет хорошо проверен. Не пытайтесь реализовать об-
:: ":тчик исключения для всех случаев, поскольку вы никогда не будете способны реа-~::з:зать такой обработчик, а следовательно, создадите еще больше проблем. Устраняя - Злему в обработчике, удостоверьтесь, что не создаете следующее исключение. В про-i вном случае исключение будет передано на более высокий уровень, вызывающей сто-:•: не метода.