Руководство по actionscript. часть 2, стр. 093

}

Неправильное размещение блока finally вызовет ошибку на этапе компиляции. В предыдущем коде блок finally будет выполнен сразу после того, как:

? выполнение блока try завершится без ошибок;

? блок catch обработает исключение, сгенерированное блоком try;

? необработанное исключение поднимется вверх по иерархии объектов;

? оператор return, continue или break передаст управление программой за пределы блоков try или catch.

Блок final 1у инструкции try/ cat ch/final 1у обычно содержит очищающий код, который должен выполняться независимо от того, возникло исключение в соответ-

ствующем блоке try или нет. Предположим, что мы создаем игру в жанре «космический шутер» и определяем класс Spaceship, представляющий космические корабли. У класса Spaceship есть метод attackEnemy ( ), который выполняет следующее.

? Устанавливает текущую цель для космического корабля.

? Стреляет по выбранной цели.

? Удаляет выбранную цель (присваивая переменной currentTarget объекта Spaceship значение null).

Предположим, что в нашем гипотетическом приложении при выполнении первых двух из описанных задач может возникнуть исключение. Более того, предположим, что метод attackEnemy ( ) не обрабатывает эти исключения самостоятельно; он передает исключения вызывающему методу. Независимо от того, было сгенерировано исключение или нет, метод attackEnemy ( ) должен присвоить переменной currentTarget значение null.

Вот так выглядел бы метод attackEnemy ( ), если бы мы запрограммировали его с помощью оператора catch (то есть без использования блока finally):

public function attackEnemy (enemy:SpaceShip):void { try {

setCurrentTarget(enemy): fireOnCurrentTargetC ): } catch (e:Error) { // Удаляем текущую цель, если возникло исключение. setCurrentTarget(nul1): // Передаем исключение вызывающему методу, throw е:

}

// Удаляем текущую цель, если никаких исключений не возникло. setCurrentTarget(nul1);

}

Здесь мы вынуждены дублировать инструкцию setCurrentTarget (null). Мы поместили ее и внутрь блока catch, и после инструкции try/catch, гарантируя тем самым, что она будет выполнена независимо от того, возникло исключение в блоке try или нет. Тем не менее дублирование инструкции может привести к ошибке. В предыдущем методе программист мог бы легко забыть удалить текущую цель после блока try/catch.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 04.09.2011">FastStore Image Viewer
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 116
  • 19.11.2011">Обзор HTC Radar
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.13
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 041
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.1
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 064
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 042
  • 22.08.2012">McAfee собирается защищать автомобили от вирусов
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 008
  • 02.03.2011">Руководство по actionscript. часть 5, стр. 094
  • 18.08.2010">Как располагается информация о рабочем процессе
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 060
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 130
  • 09.03.2011">Руководство по actionscript. часть 4, стр. 055
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...