Criação de classes de erros personalizadas

Flash Player 9 e posterior, Adobe AIR 1.0 e posterior

Você pode estender uma das classes Error padrão para criar suas próprias classes de erro especializadas no ActionScript. Há vários motivos para criar suas próprias classes de erro:

  • Para identificar erros ou grupos de erros específicos que são exclusivos do seu aplicativo.

    Por exemplo, execute ações diferentes para erros lançados por seu próprio código, além daqueles capturados pelo tempo de execução do Flash. Você pode criar uma subclasse da classe Error para controlar o novo tipo de dados de erro em blocos try..catch .

  • Para fornecer recursos de exibição de erros exclusivos para os erros gerados pelo seu aplicativo.

    Por exemplo, você pode criar um novo método toString() que formata suas mensagens de erro de uma determinada maneira. Você também pode definir o método lookupErrorString() que obtém um código de erro e recupera a mensagem apropriada com base na preferência de idioma do usuário.

Uma classe de erro especializada deve estender a classe Error principal do ActionScript. Veja um exemplo de uma classe AppError especializada que estende a classe Error:

public class AppError extends Error 
{ 
    public function AppError(message:String, errorID:int) 
    { 
        super(message, errorID); 
    } 
}

O exemplo a seguir mostra o uso de AppError em seu projeto:

try 
{ 
    throw new AppError("Encountered Custom AppError", 29); 
} 
catch (error:AppError) 
{ 
    trace(error.errorID + ": " + error.message) 
}
Nota: Para substituir o método Error.toString() na sua subclasse, atribua-lhe um parâmetro ... (rest). A especificação da linguagem ECMAScript, na qual o ActionScript 3.0 tem base, define o método Error.toString() desse modo, enquanto o ActionScript 3.0 adota a mesma definição para garantir a compatibilidade com versões anteriores. Portanto, ao substituir o método Error.toString() , deve haver uma correspondência exata de parâmetros. Os parâmetros não devem ser transmitidos para o método toString() em tempo de execução porque serão ignorados.