Руководство по actionscript. часть 2, стр. 089
Trace(«Exception caught in ErrorDemo, thrown by doSomething( ).»);
}
}
Стек вызовов — это список функций или методов программы, исполнением которых среда А щ Flash занимается в любой момент времени. Функции и методы размещаются в списке 3-У в порядке, обратном порядку их вызова, по направлению сверху вниз. Если функция
находится непосредственно под другой функцией в стеке вызовов, значит, нижняя
функция была вызвана верхней функцией. Самая нижняя функция в стеке вызовов — это
функция, выполняемая в настоящий момент.
В приложении Flex Builder и среде разработки Flash вы можете использовать отладчик для просмотра стека вызовов текущей программы, как описано в документации корпорации Adobe.
В предыдущем коде исключение, сгенерированное методом, было поймано блоком try/catch, в который включена инструкция вызова метода. Тем не менее, если вокруг кода, вызывающего функцию или метод, не найден блок try, среда выполнения Flash просматривает весь стек вызовов в поисках блока try с соответствующим блоком catch. Следующий код демонстрирует метод, генерирующий ошибку, которая обрабатывается двумя уровнями выше в стеке вызовов:
public class ProblemClass { public function doSomething ( ):void { // Среда выполнения Flash: Хм. Блок try отсутствует.^ // Проверю-ка я, кто вызвал этот метод, throw new Error(«Something went wrong»):
}
public class NormalClass { public function NormalClass ( ) { // Среда выполнения Flash: Ага, вот кто вызвал метод doSomething( ). // Но здесь все равно нет блока try. Проверю,
// кто вызвал этот метод,
var problemObject:ProblemClass = new ProblemClass( ); problemObject. doSomething( );
}
}
// Среда выполнения Flash: Ага! Нашла блок try, который имеет блок // catch, типом данных параметра которого
// является Error! Моя работа сделана.