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

В предыдущем примере код в блоке catch при отладке просто отображает значение переменной message объекта Error. Однако в более сложном приложении блок catch может попытаться восстановить работоспособность программы после ошибки, возможно отобразив окно, которое позволит пользователю указать допустимое имя.

Обработка нескольких типов исключений

Пример исключения из предыдущего раздела был чрезмерно упрощен. Что произойдет, если наш метод генерирует ошибки нескольких типов? Все ошибки будут отправлены в один и тот же блок catch? Что ж, это зависит от разработчика. Конечно, они все могут быть отправлены в один блок catch, однако чаще всего обработка различных типов ошибок выполняется отдельными блоками cat ch — и это является хорошей практикой. Рассмотрим почему.

Предположим, что мы хотим получить набор более детальных сообщений об ошибках в нашем методе setName ( ): одно сообщение для недопустимых данных, одно — для слишком короткого имени, еще одно — для слишком длинного имени.

Тело нашего модифицированного метода setName ( ) могло бы выглядеть следующим образом:

if (newNameлndexOfC «) == 0) {

// Имена не могут начинаться с пробела…

throw new Error(«Invalid pet name specified.»); } else if (newName == «») {

throw new Error(«Pet name too short.»); } else if (newName. length > Virtual Pet. maxNameLength) {

throw new ErrorCPet name too long.»);

}

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

try {

somePet. setName(«некоеИмяЖивотного»);

// Если мы находимся здесь, значит, исключение не возникло;, продолжаем // выполнение, как планировалось ранее. traceCPet name set successfully.»); } catch (e:Error) { switch (e. message) {

case «Invalid pet name specified.»:

traceC’An error occurred: » + e. message);

traceCPlease specify a valid name.»);

break;

case «Pet name too short.»:

traceC’An error occurred: » + e. message);

traceCPlease specify a longer name.»);

break;

case «Pet name too long.»:

traceC’An error occurred: » + e. message);

traceCPlease specify a shorter name.»);

break;

}

}

Надо признаться, что этот код работает, однако он имеет множество недостатков. Самый первый и наиболее серьезный недостаток состоит в том, что ошибки, отличаются друг от друга только текстом в строке, которая скрыта внутри класса Vi rtual Pet. Всякий раз, когда мы хотим узнать, какие типы ошибок могут возникать в методе setName ( ), мы вынуждены обращаться к коду класса VirtualPet и искать строки сообщений об ошибках. Использование сообщений для идентификации ошибок между различными методами и классами зачастую приводит к появлению ошибок, вызванных человеческим фактором, и затрудняет поддержку нашего кода. Второй недостаток заключается в том, что оператор switch сам по себе сложен для чтения. Это ненамного лучше использования, скажем, числовых кодов ошибок вместо формальных исключений.

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

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

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

Полезные ссылки
Случайные записи
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.3
  • 16.03.2010">10 главных пунктов для оптимизации под поисковые системы
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 001
  • 20.03.2011">Руководство по actionscript. часть 2, стр. 066
  • 10.02.2011">Выбор формата сохранения изображения в Photoshop
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.41
  • 22.03.2011">Руководство по actionscript. часть 2, стр. 008
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.136
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.47
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 107
  • 23.02.2011">Руководство по actionscript. часть 7, стр. 040
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 050
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.18
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 134
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 024
Опрос

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

View Results

Loading ... Loading ...