Руководство по 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

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

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

Полезные ссылки
Случайные записи
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 044
  • 04.09.2011">MapleSim 5 – инструмент, позволяющий физически моделировать объекты
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 108
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 105
  • 19.06.2012">В бесплатной версии Angry Birds обнаружена опасная реклама
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 009
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 091
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 147
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 142
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 079
  • 16.03.2010">10 главных пунктов для оптимизации под поисковые системы
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 003
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 107
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.78
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 145
Опрос

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

View Results

Loading ... Loading ...