Руководство по actionscript. часть 2, стр. 084
Теперь, когда у нас появилось три типа исключений, добавим их генерацию в наш метод setName ( ):
public function setName (newName:String):void { if (newName. indexOfC «) == 0) {
throw new VirtualPetNameException( ); } else if (newName == «») {
throw new VirtualPetInsufficientDataException( ); } else if (newName. length > Virtual Pet. maxNameLength) {
throw new VirtualPetExcessDataException( );
}
petName = newName;
}
Обратите внимание, что в конструкторы различных исключений класса Virtual Pet не передаются никакие описания ошибок. Еще раз повторим, что описание каждого исключения задается в соответствующем пользовательском подклассе класса Error через его переменную message.
Теперь, когда каждое исключение класса VirtualPet представлено собственным классом, программистам, работающим с экземплярами класса VirtualPet, известны все ошибки, которые могут быть сгенерированы методом setName ( ). Типы исключений доступны за пределами класса VirtualPet и, соответственно, открыты для программистов, работающих над приложением. Разработчику достаточно взглянуть на иерархию классов приложения, чтобы определить исключения, относящиеся к классу VirtualPet. Более того, если он случайно укажет неправильное имя для исключения, компилятор сгенерирует ошибку типа.
Рассмотрим, как добавить в код логику ветвления, основанную на типах исключений, которые могут быть сгенерированы методом setName ( ). Особое внимание обратите на типы данных параметров и размещение каждого блока catch.
try {
b. setNameCнекоеИмяЖивотного»); } catch (e:VirtualPetExcessDataException) {
// Обработка ситуации «слишком длинное».