Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.07.2009, 21:25
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 1  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
По умолчанию Зачем нужен блок finally?

Как-то никогда раньше не задумывался, зачем нужен блок finally, да и не пользовался никогда.

Покажите, пожалуйста, хотя бы один пример где он реально нужен.
__________________
Дело не в тебе

Старый 23.07.2009, 21:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Для перехвата исключения, возвращенного проигрывателем Flash Player или пользовательским кодом, вставьте код, который может выдать исключение, в блок try. Если какой-либо код в блоке try выдаст исключение, управление передается блоку catch, при его наличии, затем блоку finally, если такой существует. Блок finally всегда выполняется, независимо от того, было ли возвращено исключение. Если код в блоке try не выдаст исключение (т. е. при нормальном выполнении блока try), код в блоке catch игнорируется, но код в блоке finally все же выполняется. Блок finally выполняется, даже если блок try завершается командой return.
...
Если ошибка произошла в функции, которая не содержит обработчик catch, проигрыватель Flash Player завершает выполнение этой функции, а также вызывающих функций, пока не будет найден блок catch. Во время этого процесса обработчики finally вызываются на всех уровнях.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 23.07.2009, 22:35
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 3  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Ну и что? Это я знаю. А что мешает просто написать код вне блока try?

Добавлено через 1 минуту
А, стоп. Если в блоке try ошибок не сгенерировалось, но метод завершился выражением return, то блок finally все равно выполнится перед выходом из функции?

Было бы здорово посмотреть на живой пример, а то я не совсем представляю область применения finally.
__________________
Дело не в тебе


Последний раз редактировалось AL.exe; 23.07.2009 в 22:38.
Старый 24.07.2009, 11:06
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 4  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Сравните:
Код AS3:
try{
throw();
}
finally{
код вне блока try
}
и

Код AS3:
try{
throw();
}
код вне блока try
Во втором случае "код вне блока try" не выполнится, если я не ошибаюсь (:

Старый 24.07.2009, 12:27
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
sospamom, не выполнится. так как код написан с ошибкой.

Старый 24.07.2009, 12:36
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 6  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
BlooDHounD
Я не понял о какой ошибке вы говорите.

Старый 24.07.2009, 12:51
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 7  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
После try обязан идти catch, finally, или оба.
И что есть throw() ?
__________________
Griver


Последний раз редактировалось mre; 24.07.2009 в 12:56.
Старый 24.07.2009, 13:30
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 8  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
sospamom, о той, которая не даст скомпилироваться Вашему коду.
и не расстраивайтесь, всё равно Вы ошибаетесь.

Старый 24.07.2009, 13:47
sospamom вне форума Посмотреть профиль Отправить личное сообщение для sospamom Найти все сообщения от sospamom
  № 9  
Ответить с цитированием
sospamom

Регистрация: Jun 2008
Сообщений: 126
Код AS3:
try{
	try{
		throw new Error();
	}
	finally
	{
		trace('код внутри finally');
	}
	trace('код вне блока finally');
 
}
catch(error:Error){
	trace('код внутри catch');
}
Output:
код внутри finally
код внутри catch

Старый 24.07.2009, 14:24
Juice_Green вне форума Посмотреть профиль Отправить личное сообщение для Juice_Green Посетить домашнюю страницу Juice_Green Найти все сообщения от Juice_Green
  № 10  
Ответить с цитированием
Juice_Green
 
Аватар для Juice_Green

Регистрация: Dec 2005
Адрес: Новосибирск
Сообщений: 529
Отправить сообщение для Juice_Green с помощью ICQ Отправить сообщение для Juice_Green с помощью Skype™
to @sospamon:
это что за презентация?

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.