Cuando ocurre un error en Javascript, se hace un tratamiento determinado (mostrar el error al usuario, ya sea mediante un mensaje o la consola Javascript, o simplemente mostrar un icono y detener la ejecución de ese código). Nosotros con try … catch podemos evitar que el error se trate de manera predeterminada y que se realicen unas acciones determinadas ante el error. Además, podemos conseguir que el código se siga ejecutando sin ningún problema.
Con try especificamos una serie de sentencias Javascript que vamos a tratar de ejecutar. Con catch especificamos lo que queremos realizar si es que se ha cazado un error en el bloque try. La sintaxis de utilización es la siguiente:
try {
//intento algo que puede producir un error
}catch(mierror){
//hago algo cuando el error se ha detectado
}
El Bloque try se ejecuta tal cual, hasta que un posible error se ha detectado.
try {
//intento algo que puede producir un error
funcion_que_no_existe()
}catch(mierror){
alert("Error detectado: " + mierror.description)
}
Cuando se ejecute el try, se detectará un error, al tratar de ejecutar una función que no existe. Entonces se ejecutará la cláusula catch, mostrando el error que se ha detectado. Si nos fijamos, se muestra una descripción del error detectado mediante mierror.description.
Pero la propiedad description del error sólo existe en Internet Explorer. En Firefox, para mostrar una descripción del error lo hacemos directamente con la variable. Así:
try {
//intento algo que puede producir un error
funcion_que_no_existe()
}catch(mierror){
alert("Error detectado: " + mierror)
}
Entonces, para hacer un bloque try … catch como este que funcione en los dos navegadores deberíamos hacer esto:
try {
//intento algo que puede producir un error
funcion_que_no_existe()
}catch(mierror){
if (mierror.description){
alert("Error detectado: " + mierror.description)
}else{
alert("Error detectado: " + mierror)
}
}
try {
throw "miexcepcion"; //lanza una excepción
}
catch (e) {
//tratamos la excepción
alert(e);
}
Este código, válido tanto para Internet Explorer como Firefox, lanza una excepción en el bloque try. Luego, en el bloque catch, se muestra la excepción que se ha detectado.
![]() bernard... | Errata en un texto | 02/2/2011 |