Adobe - Flash - Platform Обробка помилок у ActionScript 3

Flash Player 9 і пізніших версій, Adobe AIR 1.0 та пізніших версій

Оскільки багато програм можуть працювати без створення логіки обробки помилок, деякі розробники не поспішають вбудовувати засоби обробки помилок у свої програми. Тим не менш, без обробки помилок програма легко може «зависнути» або розчарувати користувача, якщо не працюватиме так, як очікувалося. ActionScript 2.0 має клас Error, що дозволяє вбудувати логіку в функції користувача для генерації виключення зі спеціальним повідомленням. Оскільки обробка помилок є критичною умовою для створення зручної для користувача програми, ActionScript 3.0 включає розширену архітектуру перехоплення помилок.

Елементи обробки помилок у ActionScript 3.0

У ActionScript 3.0 використовуються численні інструменти обробки помилок, наведені нижче.

Класи Error. ActionScript 3.0 включає великий набір класів Error, які розширюють спектр ситуацій, які створюють помилки. Кожен клас Error допомагає застосуванню обробляти специфічні стани помилки. Ці стани можуть стосуватися помилок системи (наприклад, стан MemoryError), помилок коду (наприклад, стан ArgumentError), помилок мережі та комунікації (наприклад, стан URIError) або інших помилок. Для отримання додаткової інформації щодо кожного класу див. розділ Порівняння класів помилок.

Зменшення кількості прихованих збоїв. У ранніх версіях Flash Player помилки генерувалися і повідомлялися лише у тому випадку, коли явно використовувалась інструкція throw. У Flash Player 9 і пізніших версіях середовища виконання Flash власні методи та властивості ActionScript видають помилки часу виконання. Ці помилкидозволяють ефективніше обробляти винятки у міру виникнення, а потім відповідати на кожне з них окремо.

У процесі налагодження відображаються точні повідомлення про помилки. У налагоджувальних версіях середовища виконання Flash проблемні коди та ситуації генерують докладні повідомлення про помилки, які дають змогу легко визначити причини збою у конкретному блоці коду. Ці повідомлення дозволяють ефективно виправляти помилки. Для отримання додаткових відомостей див. «Робота з налагоджувальними версіями середовищ виконання Flash».

Чітке визначення помилок дозволяє надсилати користувачам точні повідомлення про помилки. У ранніх версіях Flash Player метод FileReference.upload() повертав логічне значення false, якщо виклик методу upload() був неуспішним, вказуючи при цьому одну з п'яти можливих помилок. Якщо помилка відбувається при викликі методу upload() в ActionScript 3.0, передбачено чотири специфічні помилки, які дозволяють відображати точніші повідомлення про помилки для кінцевого користувача.

Точна обробка помилок. Багато стандартних ситуацій генеруються чітко визначені помилки. Наприклад, в ActionScript 2.0 перед заповненням об'єкта FileReference властивість name має значення null (так, перед використанням або відображенням властивості name необхідно переконатися, що це значення не встановлено як null ). В ActionScript 3.0 при спробі доступу до властивості name перед тим, як було заповнено, Flash Player або AIR генерує повідомлення IllegalOperationError, яке інформує про те, що значення не було задано, так що для обробки помилки можна використовувати блоки try..catch. finally. Щоб отримати додаткові відомості, див. Використання інструкцій try..catch..finally.

Відсутність суттєвого зниженняпродуктивність. Використання для обробки помилок блоків try..catch..finally вимагає значно менше додаткових ресурсів у порівнянні з попередніми версіями ActionScript.

Клас ErrorEvent дозволяє створювати прослуховувачів для специфічних подій асинхронних помилок. Докладнішу інформацію див. у розділі Відповіді на події помилок та помилки стану.

Стратегія обробки помилок

Якщо програма не стикається з проблемними ситуаціями, вона може успішно працювати навіть без вбудованої в його код логіки обробки помилок. Тим не менш, при виникненні збоїв у додатку, який не має активної системи обробки помилок, кінцеві користувачі ніколи не дізнаються про причини цих збоїв.

Існує кілька підходів до питання обробки помилок у додатку. Нижче наведено три основні способи обробки помилок.

Використання інструкцій try..catch..finally. Вони дозволяють перехоплювати синхронні помилки за її виникненні. Інструкції можна розташувати в ієрархічному порядку, щоб перехоплювати винятки на різних рівнях коду. Щоб отримати додаткові відомості, див. Використання інструкцій try..catch..finally.

Створення об'єктів користувача помилок. Для контролю специфічних операцій програми, які не передбачені вбудованими типами помилок, можна використовувати клас Error з метою створення власних об'єктів помилок. Після цього можна буде використовувати інструкції try..catch..finally разом із створеними об'єктами помилок. Додаткові відомості див. у розділі Створення власних класів помилок.

Створення прослуховувачів подій та обробників для відповіді на події помилок. Використовуючи цю стратегію, можна створювати глобальні обробники помилок, які дозволяютьобробляти подібні події без дублювання коду у блоках try..catch..finally. За допомогою цього методу можна також з великою ймовірністю перехоплювати асинхронні помилки. Докладнішу інформацію див. у розділі Відповіді на події помилок та помилки стану.