Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий
       
       
       
       
        
         | 
  
           
            Поскольку многие приложения могут работать без создания логики обработки ошибок, некоторые разработчики не спешат встраивать средства обработки ошибок в свои программы. Тем не менее, без обработки ошибок приложение легко может «зависнуть» или разочаровать пользователя, если не будет работать так, как ожидалось. ActionScript 2.0 имеет класс Error, позволяющий встроить логику в пользовательские функции для генерации исключения со специальным сообщением. Поскольку обработка ошибок является критическим условием для создания удобного для пользователя приложения, ActionScript 3.0 включает в себя расширенную архитектуру перехвата ошибок.
            
            
             Примечание.
            
            Хотя в
            справочнике ActionScript® 3.0 для платформы ® Flash® Platform 
            перечислены исключения, выдаваемые многими методами, этот список может включать не все возможные исключения для каждого из них. Метод может генерировать исключения, связанные с ошибками синтаксиса или с другими проблемами, которые не указаны явно в описании метода, даже если в этом описании приводится список исключений, отправляемых методом.
            
           
            
           
           
            Элементы обработки ошибок в 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
               
               . С помощью этого метода можно также с большой долей вероятности перехватывать асинхронные ошибки. Для получения подробной информации см. раздел
               
                Ответы на события ошибок и ошибки состояния
               
               .
               
           |  |  |