Se puede ampliar una de las clases Error estándar para crear clases de error especializadas propias en ActionScript. Existen varias razones por las que se crean clases de error personalizadas:
-
Para identificar errores o grupos de errores específicos que son exclusivos de la aplicación.
Por ejemplo, es posible que se deseen realizar diferentes acciones en el caso de errores generados por el código personalizado, además de los que captura un motor de ejecución de Flash. Se puede crear una subclase de la clase Error para hacer un seguimiento del nuevo tipo de datos de error en bloques
try..catch
.
-
Para proporcionar funciones de visualización de error exclusivas para errores generados por la aplicación.
Por ejemplo, se puede crear un nuevo método
toString()
que aplique formato a los mensajes de error de una manera determinada. Asimismo, se puede definir un método
lookupErrorString()
que capture un código de error y recupere el mensaje adecuado según la preferencia de idioma del usuario.
Las clases de error especializadas deben ampliar la clase Error principal de ActionScript. A continuación, se muestra un ejemplo de clase AppError especializada que amplía la clase Error:
public class AppError extends Error
{
public function AppError(message:String, errorID:int)
{
super(message, errorID);
}
}
Ejemplo de la utilización de AppError en un proyecto:
try
{
throw new AppError("Encountered Custom AppError", 29);
}
catch (error:AppError)
{
trace(error.errorID + ": " + error.message)
}
Nota:
si se desea sustituir el método
Error.toString()
en la subclase, hay que proporcionarle un parámetro
...
(resto). La especificación del lenguaje ECMAScript en la que está basado ActionScript 3.0 define el método
Error.toString()
de esta forma, y ActionScript 3.0 lo define del mismo modo para conseguir compatibilidad con versiones anteriores. Por lo tanto, si se sustituye el método
Error.toString()
, los parámetros deben coincidir exactamente. No deben transmitirse parámetros al método
toString()
en tiempo de ejecución, ya que dichos parámetros se omitirán.