Для перехвата ошибок вы можете использовать (
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 и дальнейшее выполнение скрипта было прервано.