ИГРОДЕЛ
Войдите на сайт или зарегистрируйтесь!!!

Join the forum, it's quick and easy

ИГРОДЕЛ
Войдите на сайт или зарегистрируйтесь!!!
ИГРОДЕЛ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

ActionScript 3.0. Урок 9. Ошибки

Перейти вниз

ActionScript 3.0. Урок 9. Ошибки Empty ActionScript 3.0. Урок 9. Ошибки

Сообщение автор Admin Вс Фев 21, 2010 4:11 am

Одна вещь, которую вы можете заметить в ActionScript 3 – это насколько он склонен к ошибкам, или точнее, насколько склонными к ошибкам он воспринимает вас. Вы увидите намного больше ошибок не только во время компиляции, но и в процессе прогона. ActionScript 3 гораздо менее снисходителен, и не позволит вам уйти от ошибок, или конфликтов в коде. Несмотря на то, что ActionScript 1 и 2 могут молча отказать, или проигнорировать много ошибок, ActionScript 3 обязательно даст вам понять, если что-то пошло не так.



Синхронные ошибки

Обычные ошибки в коде, которые случаются по мере запуска блока кода, являются синхронными ошибками. Когда флеш-плеер сталкивается с одной из этих ошибок в коде, выскакивает ошибка, или исключение. В этой точке флеш-плеер приостановит выполнение кода в данном блоке и не допустит продолжение его выполнения, пока исключение не будет устранено, или поймано. Для того чтобы поймать исключение в ActionScript, используется выражение try..catch..finally.

Выражение try..catch..finally позволяет попробовать, может ли блок кода сбросить ошибку или прореагировать соответствующим образом, если ошибка случается. Оно состоит из 2 или более блоков кода. Вначале идет блок try, состоящий из кода, который может выдать ошибку. Далее один, или более, блоков catch, которые ловят ошибки разных типов и запускаются, если выдан нужный тип ошибки, и дополнительный блок finally, который запускается после try и любого из блоков catch, независимо от того, произошла ошибка или нет. Формат выражения выглядит следующим образом:

try {
// potential error causing code
} catch (error:Error) {
// error of type Error occurred
// additional catch blocks may follow
} finally {
// optional to follow try and catch blocks
}

Если исключение произошло внутри блока try, флеш будет просматривать каждый блок catch, пока не будет найден совпадающий тип ошибки. Когда совпадение найдено, этот код запускается, после него идет блок finally, если он существует. Любой дополнительный код, следующий за выражением try..catch..finally будет запущен как обычно, даже если произошла ошибка, потому что он был пойман выражением try..catch..finally.




Выдача пользовательских ошибок

Ошибки выдаются не только флеш-плеером. У вас также есть возможность выдавать ошибки в своем собственном коде, если вы захотите. Чтобы выдавать ошибки, нужно использовать выражение throw. Выражение throw выдает любое значение, которое превосходит его (а именно, объект Error). После появления, ошибка будет действовать как любая другая ошибка и потребует наличия выражения try..catch..finally для ее правильного захвата.

// Throwing your own errors in ActionScript
throw new Error("Error message");

Выдача собственных ошибок может быть полезным инструментом отладки, особенно, если вы работаете с более сложными приложениями.


Асинхронные ошибки

Ошибки также могут возникнуть во время асинхронных действий, таких как загрузка внешнего контента, и принимают форму событий. Эти ошибки не могут быть захвачены с помощью выражений try..catch..finally. Вместо этого, вам придется создавать обработчики событий, чтобы обрабатывать и «захватывать» ошибочные события. Если у вас нет листенера событий, привязанного к ошибочному событию, а эта ошибка возникает, флеш-плеер проинформирует вас о необработанном ошибочном событии.

// creating listeners for error events handles
// asynchronous errors
target.addEventListener(ErrorEvent.TYPE, handler);
function handler(event:ErrorEvent):void {
// handle error
}
Создание асинхронных ошибок

Если вы хотите вызвать собственные асинхронные ошибки, все что вам нужно, это послать событие типа ErrorEvent, используя dispatchEvent. Когда необработанное событие ErrorEvent достигнет флеш-плеера при авторинге во флеш, в окне вывода будет показана ошибка.

// target object is an event dispatcher
// that needs to dispatch an error event
target.dispatchEvent(new ErrorEvent("type"));


Release и Debug версии плееров

Флеш-плеер доступен в двух версиях - release и debug. Release-плеер является стандартным, общедоступным плеером. Это тот плеер, который вы устанавливаете в браузере при закачивании и установке его с сайта adobe.com.
Debug-плеер является альтернативным плеером с дополнительной отладочной информацией и встроенными способностями. От этого плеер стал немного тяжелее по размеру (поэтому он и не предпочитается для распространения), но в то же время предоставляет всплывающие окна для не захваченных исключений и необработанных асинхронных ошибок – всего того, что обычный плеер, скорее всего, не увидит, когда ваш флеш-фильм, или приложение, столкнется с препятствием. Тем не менее, этот плеер предоставляет разработчикам полезную информацию при тестировании фильмов.

Вы можете найти инсталляторы для обеих версий плеера в папке Players внутри установочной директории вашей программы Flash CS3 (или более старшей версии).

Всегда следует помнить о том, что так как release-плеер не представляет ошибку визуально при выдаче исключения, это не значит, что строка с ошибкой просто игнорируется, как в предыдущих версиях ActionScript. Произойдет выход из блока кода, в котором произошла ошибка, а оставшийся скрипт будет проигнорирован.
Admin
Admin
Admin

Сообщения : 92
Очки : 280
Репутация : 36
Дата регистрации : 2010-02-20

https://game-dll.forum2x2.ru

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения