![]() ![]() ![]() | |
![]() | |
![]() | |
![]() |
Flash Player 7.
try { // ... bloque try ... } finally { // ... bloque finally ... } try { // ... bloque try ... } catch(error[:ErrorType1]) { // ... bloque catch ... } [catch(error[:ErrorTypeN]) { // ... bloque catch ... }] [finally { // ... bloque finally ... }]
error
Expresión emitida desde una sentencia throw
, que generalmente es una instancia de la clase Error o una subclase de la misma.
ErrorType
Especificador de tipo opcional para el identificador error
. La cláusula catch
sólo detecta errores del tipo especificado.
Palabras clave; incluya un bloque de código en el que pueda producirse un error y, a continuación, responda al error. Si el código del bloque try
emite un error (utilizando la acción throw
), el control pasa al bloque catch
, si existe, y, a continuación, al bloque finally
, si existe. El bloque finally
siempre se ejecuta, independientemente de que se emita un error o no. Si el código del bloque try
no emite un error (es decir, el bloque try
finaliza correctamente), se ejecuta el código del bloque finally
. El bloque finally
se ejecuta aun cuando el bloque try
salga utilizando una sentencia return
.
Un bloque try
debe ir seguido por un bloque catch
, un bloque finally
o ambos. Un mismo bloque try
puede tener varios bloques catch
, pero sólo un bloque finally
. Puede anidar bloques try
en tantos niveles de profundidad como desee.
El parámetro error
especificado en un controlador catch
debe ser un identificador simple como e
, theException
o x
. La variable de un controlador catch
también puede ser typed. Cuando se utilizan con varios bloques catch
, los errores de tipo permiten detectar varios tipos de errores emitidos desde un mismo bloque try
.
Si la excepción emitida es un objeto, el tipo coincidirá si el objeto emitido es una subclase del tipo especificado. Si se emite un error de un tipo específico, se ejecuta el bloque catch
que controla el error correspondiente. Si se emite una excepción que no es del tipo especificado, el bloque catch
no se ejecuta y la excepción se emite automáticamente desde el bloque try
a un controlador catch
del mismo tipo.
Si se emite un error desde una función y ésta no incluye un controlador catch
, el intérprete de ActionScript sale de dicha función y de todas las funciones de llamada hasta que se encuentre un bloque catch
. Durante este proceso, se llama a los controladores finally
en todos los niveles.
En este ejemplo se muestra cómo crear una sentencia try..finally
. Puesto que el código del bloque finally
se ejecutará de todos modos, generalmente se utiliza para ejecutar el código de "limpieza" necesario tras ejecutar un bloque try
. En este ejemplo, el bloque finally
se utiliza para eliminar un objeto ActionScript, independientemente de si se ha producido un error.
var account = new Account() try { var returnVal = account.getAccountInfo(); if(returnVal != 0) { throw new Error("Error al obtener información sobre la cuenta."); } } finally { // Eliminar el objeto 'account' en cualquier circunstancia. if(account != null) { delete account; } }
En este ejemplo se muestra el funcionamiento de una sentencia try..catch
. Se ejecuta el código del bloque try
. Si algún código del bloque try
emite una excepción, el control pasa al bloque catch
, que muestra el mensaje de error en un campo de texto utilizando el método Error.toString()
.
var account = new Account() try { var returnVal = account.getAccountInfo(); if(returnVal != 0) { throw new Error("Error al obtener información sobre la cuenta."); } } catch (e) { status_txt.text = e.toString(); }
En este ejemplo se muestra un bloque de código try
con varios bloques de código catch
de tipo. En función del tipo de error que se produzca, el bloque de código try
emitirá un tipo de objeto distinto. En este caso, myRecordSet
es una instancia de una clase (hipotética) denominada RecordSet cuyo método sortRows()
puede emitir dos tipos de error distintos: RecordSetException y MalformedRecord.
En este ejemplo, los objetos RecordSetException y MalformedRecord son subclases de la clase Error. Cada una está definida en su propio archivo de clase AS. Para más información, consulte Creación de clases con ActionScript 2.0.
// En RecordSetException.as: class RecordSetException extends Error { var message = "Excepción de registro." } // In MalformedRecord.as: class MalformedRecord extends Error { var message = "Excepción de registro incorrecto."; }
En el método sortRows()
de la clase RecordSet, se emite uno de los objetos de error definidos anteriormente en función del tipo de excepción que se haya producido. En el fragmento de código siguiente se muestra cuál podría ser el aspecto de este código.
// En el archivo de clase RecordSet.as... function sortRows() { ... if(recordSetErrorCondition) { throw new RecordSetException(); } if(malFormedRecordCondition) { throw new MalformedRecord(); } ... }
Por último, en otro archivo AS o script FLA, el código siguiente invoca el método sortRows()
o una instancia de la clase RecordSet. Define bloques catch
para cada tipo de error que emite sortRows()
.
try { myRecordSet.sortRows(); } catch (e:RecordSetException) { trace("Caught a recordset exception"); } catch (e:MalformedRecord) { trace("Caught a malformed record exception"); }
Clase Error, throw
, class
, extends
![]() | |
![]() | |
![]() | |
![]() ![]() ![]() |