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 mensajenumber
: 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);
}
}
})();
3 comentarios, 0 referencias
+
#