Contenido

El arte de lanzar errores en Javascript

6 mar

+ 3

Uno de los artículos que vimos ayer en el recopilatorio de posts interesantes fué el de Nicolas C.Zakas, que nos muestra “El arte de lanzar errores”. Pero aún podemos extenderlo más y usar todas las posibilidades de las que disponemos para lanzar errores.

Según el MDC de Mozilla Labs, tenemos 7 tipos diferentes de errores que podemos lanzar:

Error

Se trata del error genérico, engloba todos los anteriores y compone el objeto base del que descienden los demás tipos de error. Su uso está pensado para informar al usuario de un error en tiempo de ejecución (falta de un parámetro, una variable no válida,…) esto no contempla los errores de compilación, aunque puede ser usado para ello. Se supone que tenemos el control de la ejecución y devolvemos un error por que no se ejecuta como debería. Está compuesto de:

  • message: Mensaje del error.
  • name: tipo del error.

El constructor del objeto nos permite indicar el mensaje de error que estamos lanzando:

new Error ("Esto es un error");

Además en Firefox, podemos usar dos parámetros más para indicar el fichero (fileName) y la línea (lineNumber) que debe aparecer en el error. Estos parámetros no son estándares y únicamente están para Firefox, los demás navegadores los omiten.

new Error("Esto es un error", "fichero.html", 34);

Por otro lado, Microsoft extiende Error() con las propiedades:

  • description: Similar al mensaje
  • number: Para indicar el número de mensaje.

estas propiedades son exclusivas de Microsoft, disponibles en Internet Explorer y únicamente para ellos.

EvalError

Este tipo de error se lanza cuando ocurre un error en la función eval();

RangeError

Lanzada cuando un parámetro o un número se sale de rango.

ReferenceError

Error que se lanza cuando se usa una referencia no válida.

SyntaxError

Tipo de error lanzado cuando se parsea el código usado en eval();

TypeError

Lanzado cuando una variable o un parámetro no es del tipo válido

URIError

Lanzado cuando encodeURI() y decodeURI() reciben parámetros no válidos.

throw

Esta sentencia nos permite lanzar excepciones al navegador desde nuestro código. Generalmente la usaremos dentro de un try....catch para evitar problemas con navegadores más antiguos y asegurarnos que hacemos llegar el error al navegador.

Modo de empleo

Como hemos visto antes, deberemos usar try…catch para asegurarnos que todo funcione bien, así que un ejemplo de como deberíamos usarlo sería asi:

try {
	throw new Error("Esto es un error");
} catch(e) {
	alert(e.name + ": " + e.message);
}

Ejemplo

Para verlo dentro de un ejemplo, he montado un ejemplo muy estúpido y sin sentido, pero que se puede ver como incrustamos lo que acabamos de ver.

document.getElementsByClassName = (function(){
	if (document.getElementsByClassName) {
		return document.getElementsByClassName;
	} else {
		try{
			throw new Error("No existe el método");
		}catch(e){
			alert(e.name + ": " + e.message);
		}
	}
})();

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.