Показать сообщение отдельно
Старый 02.11.2006, 18:45
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 82  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 88. Ошибки: try..catch..finally

Для перехвата ошибок вы можете использовать (try..catch..finally statement).
Код:
try {
     // statements
} catch (error:Error) {
     // statements
} finally {
     // statements
}
Первый блок внутри try – это место где ожидается возникновение ошибки. Далее идет блок catch который будет выполнится если в блоке try произойдет ошибка. Блоков catch может быть несколько с указанием на какой тип ошибки реагировать. И в конце идет блок finally, который выполняется после try и catch и выполняется всегда, даже если ошибка не была поймана в catch и дальнейшее выполнение кода будет прервано, или же было вызвано return, блок finally все равно выполняется.
Пример:
Код:
try {
    var value:* = new Array();
    trace(value.getChildAt(0));
    
} catch(error:IOErrorEvent) {
    trace("IOErrorEvent catch: " + error);
    
} catch(error:TypeError) {
    trace("TypeError catch: " + error);
    
} catch(error:Error) {
    trace("Error catch: " + error);
    
} finally {
    trace("Finally!");
}

trace("Continuing with script...");
Результат выполнения:
Код:
TypeError catch: TypeError: Error #1006: getChildAt is not a function.
Finally!
Continuing with script...
В соответствии с типом ошибки выполнился блок catch(error:TypeError), и выполнение скрипта продолжилось.
Что произойдет, если не будет блока catch соответствующего типу возникшей ошибки:
Код:
try {
    var value:* = new Array();
    trace(value.getChildAt(0));
    
} catch(error:IOErrorEvent) {
    trace("IOErrorEvent catch: " + error);
    
} finally {
    trace("Finally!");
}

trace("Continuing with script...");
Результат выполнения:
Код:
Finally!
TypeError: Error #1006: getChildAt is not a function.
	at Timeline0_a24dfc5f2aa9864b9d4de27c9fa097db/::frame1()
Ошибка не была поймана, выполнился только блок finally и дальнейшее выполнение скрипта было прервано.
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.