Руководство по actionscript. часть 2, стр. 086
TraceC’An error occurred:» + е. message);
traceC’The first catch block handled the error.»); } catch (e:VirtualPetExcessDataException) {
// Обработка ситуации «слишком длинное».
traceC’An error occurred: » + e. message);
traceCPlease specify a shorter name.»); } catch (e:\ZirtualPetInsufficientDataException) {
// Обработка ситуации «слишком короткое».
traceC’An error occurred: » + e. message);
traceCPlease specify a longer name.»); } catch (e:VirtualPetNameException) {
// Обработка общих ошибок, связанных с именем.
traceC’An error occurred: » + е. message);
traceCPlease specify a valid name.»);
}
Очевидно, что попытка добавить первый блок catch в предыдущем коде обречена на провал, но этот пример иллюстрирует иерархическую природу обработки ошибок. Поместив базовый блок catch в самое начало списка обработчиков, мы можем обработать все ошибки в одном блоке. И наоборот, если поместить базовый блок catch в конец списка, мы можем создать «страховочную сетку», которая будет обрабатывать любые ошибки, не «пойманные» предыдущими блоками catch. Например, в следующем коде последний блок catch будет выполнен только в том
случае, если блок try сгенерирует исключение, которое не принадлежит типам данных VirtualPetExcessDataException, Virtual Pet In sufficient Data Exception или VirtualPetNameException:
try {
b. setName(«некоеИмяЖивотного»); } catch (e:VirtualPetExcessDataException) {
// Обработка переполнения.