> Manuales > Manual de JavaScript

Vemos aspectos básicos sobre la utilización de las cláusulas try y catch para detectar y cazar errores javascript, sin que los errores sean tratados por defecto.

Muchos lenguajes de programación utilizan las cláusulas try ... catch para cazar errores y realizar cosas cuando ocurran. En este artículo vamos a ver cómo se hace esto en Javascript. Si ya desarrollas en cualquier otro lenguaje popular te resultará muy familiar.

Para qué sirve try ... catch

Durante la ejecución de los programas es normal que ocurran errores, por ejemplo cuando se hace una operación no permitida, cuando se intenta acceder a un servidor que está caído, cuando llamamos a una función sin un parámetro necesario, etc.

En programación usamos try ... catch para evitar que un error que ocurre en el momento de la ejecución reviente un programa y le estalle en la cara al usuario, pudiendo realizar acciones alternativas para subsanar el error o reaccionar de una manera adecuada.

En otras palabras, estas cláusulas las podemos utilizar para tratar de ejecutar una porción de código, que sabemos que podría desatar un error en tiempo de ejecución, pudiendo capturar el error, en vez de que le llegue a resultar un inconveniente para el usuario.

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.

Ejemplo try ... catch

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.

Qué podemos hacer con el error detectado en el catch

Si nos fijamos, podemos ver que el bloque catch recibe un dato, que en este caso hemos almacenado en la variable "mierror". Esa variable contiene información sobre el error detectado, que puede ser útil para realizar el tratamiento al error. Veamos este código:

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)
   }
}

Lanzar una excepción nosotros mismos

También, dentro de un bloque try, podemos lanzar nosotros mismos una excepción, sin que tenga por qué haberse producido un error. Esto lo hacemos con la sentencia trow.

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.

En el siguiente artículo explicaremos mejor cómo lanzar nuestros propios errores con Javascript, a la vez que seguimos practicando con try catch.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual