Comparação das classes Error

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

O ActionScript fornece várias classes Error predefinidas. Mas você também pode usar as mesmas classes Error no seu próprio código. Há dois tipos principais de classes Error no ActionScript 3.0: As classes Error principais do ActionScript e as classes Error do pacote flash.error. O pacote flash.error contém classes adicionais para auxiliar no desenvolvimento e na depuração de aplicativos do ActionScript 3.0.

classes Error principais

As classes de erro principais incluem as classes ArgumentError, EvalError, RangeError, ReferenceError, SecurityError, SyntaxError, TypeError, URIError e VerifyError. Cada uma dessas classes está localizada no namespace de nível superior.

Nome da classe

Descrição

Observações

Error

A classe Error é usada para gerar exceções e é a classe base para as outras classes de exceção definidas no ECMAScript: EvalError, RangeError, ReferenceError, SyntaxError, TypeError e URIError.

A classe Error serve de classe base para todos os erros de tempo de execução e é a classe base recomendada para qualquer classe de erro personalizada.

ArgumentError

A classe ArgumentError representa um erro que ocorre quando os valores de parâmetro fornecidos durante uma chamada de função não correspondem aos definidos para essa função.

Alguns exemplos de erros de argumento incluem:

  • Foram fornecidos argumentos insuficientes ou excedentes para um método.

  • Um argumento que deveria ser um membro de uma enumeração não é.

EvalError

Uma exceção EvalError é lançada se qualquer parâmetro for transmitido para o construtor da classe Function ou se o código do usuário chamar a função eval() .

No ActionScript 3.0, o suporte à função eval() foi removido e as tentativas de usar a função resultam em erro.

As versões anteriores do Flash Player usavam a função eval() para acessar variáveis, propriedades, objetos ou clipes de filme pelo nome.

RangeError

Uma exceção RangeError é lançada quando um valor numérico fica fora de uma faixa aceitável.

Por exemplo, um RangeError é lançado pela classe Timer se um atraso for negativo ou se não for finito. Um RangeError também poderia ser lançado se você tentasse adicionar um objeto de exibição em uma profundidade inválida.

ReferenceError

Uma exceção de ReferenceError é lançada quando há uma tentativa de referência a uma propriedade não definida em um objeto selado (não dinâmico). As versões de compilador do ActionScript antes do ActionScript 3.0 não lançavam um erro quando havia uma tentativa de acesso a uma propriedade não definida . No entanto, o ActionScript 3.0 lança a exceção ReferenceError nessa condição.

As exceções para variáveis não definidas apontam para possíveis bugs, ajudando a melhorar a qualidade do software. Entretanto, se você não está acostumado a inicializar as variáveis, esse novo comportamento do ActionScript exige algumas alterações nos seus hábitos de criação de código.

SecurityError

A exceção SecurityError é lançada quando ocorre uma violação de segurança e o acesso é negado.

Alguns exemplos de erros de segurança incluem:

  • Um acesso a propriedade ou uma chamada de método não autorizado é feito no outro lado de um limite de caixa de proteção.

  • Foi feita uma tentativa de acessar uma URL não permitida pela caixa de proteção.

  • Foi feita uma tentativa de conexão de soquete a uma porta, mas o arquivo de política de soquete necessário não estava disponível.

  • Foi feita uma tentativa de acessar a câmera ou o microfone do usuário, e o usuário negou o acesso ao dispositivo.

SyntaxError

Uma exceção SyntaxError é lançada quando ocorre um erro de análise no código do ActionScript.

Um SyntaxError pode ser lançado sob as seguintes circunstâncias:

  • O ActionScript lança exceções SyntaxError quando a classe RegExp desmembra uma expressão regular inválida.

  • O ActionScript lança exceções SyntaxError quando uma classe XMLDocument desmembra um XML inválido.

TypeError

A exceção TypeError é lançada quando o tipo real de operando é diferente do tipo esperado.

Um TypeError pode ser lançado sob as seguintes circunstâncias:

  • Um parâmetro real para uma função ou um método não pôde ser forçado ao tipo de parâmetro formal.

  • Um valor é atribuído a uma variável e não pode ser forçado ao tipo da variável.

  • O lado direito do operador is ou instanceof não é um tipo válido.

  • A palavra-chave super é usada ilegalmente.

  • Uma pesquisa de propriedades resulta em mais de uma ligação e, portanto, é ambígua.

  • Um método é chamado em um objeto incompatível. Por exemplo, uma exceção TypeError será lançada se um método na classe RegExp for "enxertado" em um objeto genérico e, depois, chamado.

URIError

Uma exceção URIError é lançada quando uma das funções de manipulação de URI global é usada de forma incompatível com sua definição.

Um URIError pode ser lançado sob as seguintes circunstâncias:

Um URI inválido é especificado para uma função da API do Flash Player que espera um URI válido, como Socket.connect() .

VerifyError

Uma exceção VerifyError é lançada quando é encontrado um arquivo SWF malformado ou corrompido.

Quando um arquivo SWF carrega outro arquivo SWF, o SWF pai pode detectar um VerifyError gerado pelo SWF carregado.

flash.error, classes Error do pacote

O pacote flash.error contém classes de Error que são consideradas parte da API do tempo de execução do Flash. Ao contrário das classes Error descritas, o pacote flash.error comunica eventos de erro específicos dos tempos de execução do Flash (como Flash Player e Adobe AIR).

Nome da classe

Descrição

Observações

EOFError

Uma exceção EOFError é lançada quando você tenta ler além do fim dos dados disponíveis.

Por exemplo, um EOFError é mostrado quando um dos métodos de leitura na interface IDataInput é chamado e não há dados suficientes para atender à solicitação de leitura.

IllegalOperationError

Uma exceção IllegalOperationError é lançada quando um método não é implementado ou quando a implementação não abrange o uso atual.

Exemplos de exceções de erro de operação ilegal incluem:

  • Uma classe base, como DisplayObjectContainer, fornece mais funcionalidade do que o Palco pode suportar. Por exemplo, se você tentar obter ou definir uma máscara em Stage (usando stage.mask ), o tempo de execução do Flash lança um IllegalOperationError com a mensagem: "A classe Stage não implementa essa propriedade ou esse método".

  • Uma subclasse herda um método que não requer e para o qual não deseja oferecer suporte.

  • Determinados métodos de acessibilidade são chamados quando o Flash Player é compilado sem o suporte de acessibilidade.

  • Recursos somente de autoria são chamados de uma versão de tempo de execução do Flash Player.

  • Você tenta definir o nome de um objeto colocado na linha de tempo.

IOError

Uma exceção IOError é lançada quando ocorre algum tipo de exceção de E/S.

Por exemplo, você obtém este erro quando uma operação de leitura/gravação é tentada em um soquete que não está conectado ou se desconectou.

MemoryError

Uma exceção MemoryError é lançada quando há uma falha na solicitação de alocação de memória.

Por padrão, a ActionScript Virtual Machine 2 não impõe um limite sobre a quantidade de memória que um programa do ActionScript aloca. Em um computador de mesa, as falhas de alocação de memória não são frequentes. Um erro é lançado quando o sistema não consegue alocar a memória necessária para uma operação. Por isso, em um computador de mesa, essa exceção é rara, a menos que uma solicitação de alocação seja extremamente grande; por exemplo, uma solicitação de 3 bilhões de bytes é impossível porque um programa Microsoft® Windows® de 32 bits só pode acessar 2 GB de espaço de endereçamento.

ScriptTimeoutError

Uma exceção ScriptTimeoutError é lançada quando um intervalo de tempo limite do script de 15 segundos é atingido. Ao detectar uma exceção ScriptTimeoutError, é possível manipular melhor o tempo limite do script. Se não houver um manipulador de exceções, a exceção não capturada exibirá uma caixa de diálogo com uma mensagem de erro.

Para impedir que um desenvolvedor mal-intencionado detecte a exceção e permaneça em um loop infinito, somente a primeira exceção ScriptTimeoutError lançada durante um determinado script pode ser detectada. Uma exceção ScriptTimeoutError subsequente não poderá ser detectada pelo seu código e irá imediatamente para o manipulador de exceções não detectadas.

StackOverflowError

A exceção StackOverflowError é lançada quando a pilha disponível para o script é esgotada.

Uma exceção StackOverflowError pode indicar que ocorreu recursão infinita.