Руководство по actionscript. часть 2, стр. 097

Если исключение генерируется в блоке try, вложенном в блок catch, и внутренний блок try не имеет блока catch, способного обработать данное исключение, поиск подходящего блока catch начинается за пределами внешней инструкции try/ catch/finally:

try {

// Здесь генерируется внешнее исключение, throw new Error(«Test error 1″); } catch (e;Error) { // Здесь обрабатывается внешнее исключение. trace(e. message); // Выводит: Test error 1 try {

// Здесь генерируется внутреннее исключение, throw new ErrorC’Test error 2″); } catch (e:SomeSpecificError) { // Внутреннее исключение здесь не обрабатывается. trace(e. message); // Инструкция никогда не будет выполнена, // поскольку типы не совпадают.

}

}

// Процесс поиска подходящего блока catch для внутреннего исключения // начинается здесь.

Наконец, если исключение генерируется в блоке try, вложенном в блок finally, но при этом предыдущее исключение уже находится в процессе подъема по стеку вызовов, новое исключение будет обработано до того, как предыдущее исключение продолжит свой подъем по иерархии объектов.

// Этот метод генерирует исключение в блоке finally, public function throwTwoExceptions ( ):void { try {

// Здесь генерируется внешнее исключение. Поскольку этот блок try // не имеет соответствующего блока catch, внешнее исключение начинает // свой подъем по иерархии объектов, throw new ErrorC’Test error 1″); } finally { try {

// Здесь возникает внутреннее исключение. Внутреннее исключение

// будет обработано до того, как внешнее исключение фактически начнет

// подъем по иерархии объектов, throw new ErrorC’Test error 2″); } catch (e:Error) { // Внутреннее исключение обрабатывается здесь, tracer Internal catch: » + e. message);

}

}

}

// Где-то в другом месте, внутри метода, // вызывающего предыдущий метод, try {

throwTwoExceptions( ); } catch (e:Error) { // Здесь обрабатывается внешнее исключение, // поднявшееся из метода throwTwoExceptions( ). trace(«External catch: » + e. message);

}

// Вывод (обратите внимание, что внутреннее исключение обработано первым): // Internal catch: Test error 2 // External catch: Test error 1

Если бы в предыдущем коде исключение, сгенерированное в блоке finally, не было обработано, среда Flash сообщила бы об ошибке на этапе отладки и прекратила бы выполнение оставшегося кода в стеке вызовов. В результате никакой код в стеке вызовов не обработал бы сгенерированное первым внешнее исключение. Следующий код демонстрирует описанный сценарий. Этот код генерирует необрабатываемое исключение в блоке finally. В итоге исключение, сгенерированное внешним блоком try, будет потеряно.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

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

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

Полезные ссылки
Случайные записи
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.121
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.99
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 071
  • 09.06.2011">Acer Ferrari 1000
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 130
  • 28.07.2011">Интернет в роли Купидона
  • 21.03.2011">Руководство по actionscript. часть 2, стр. 042
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.97
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 040
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 151
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 114
  • 12.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.112
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.103
  • 11.03.2011">Руководство по actionscript. часть 3, стр. 144
  • 19.03.2011">Руководство по actionscript. часть 2, стр. 083
Опрос

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

View Results

Loading ... Loading ...