Cláusulas try … catch: detectar y cazar errores en Javascript

  • Por
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, por ello, lo que vamos a comentar aquí para Javascript puede resultar muy familiar a los programadores. 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.

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.

  • Si no se detecta un error durante la ejecución del bloque try, el catch se deja del lado y no se realiza.
  • En caso que sí se detecte un error en el bloque try, se ejecuta las sentencias que teníamos 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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Eliel Izquierdo

09/3/2009
para describir el error, un modo más corto es:

catch (e){
alert("Error: "+(e.description?e.description:e))
}

Terko Jones

24/2/2010
Muy bueno
No tiene desperdicio

bernardao

02/2/2011
Errata en un texto
Aunque es un fallo mínimo y no afecta a la explicación, hay una errata en el primer párrado del último apartado "Lanzar una excepción nosotros mismos"
Habéis escrito "trow" y le falta la "h" "throw".
Podéis borrar el comentario una vez corregido.