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

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

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

Полезные ссылки
Случайные записи
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 134
  • 29.06.2012">Apple готовит крупное обновление для iTunes
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.37
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.79
  • 18.07.2010">Лучшие модули для сайта
  • 29.08.2010">Методы представления картинок в веб.
  • 24.08.2011">Новые функции микроблогов Twitter
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 001
  • 02.03.2011">Руководство по actionscript. часть 5, стр. 089
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 073
  • 10.04.2012">Twitter подала иск против разработчиков спам-приложений
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.88
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 004
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.6
  • 04.10.2010">Определение цвета пикселя на экране
Опрос

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

View Results

Loading ... Loading ...