martes, 16 de octubre de 2007

Tratamiento de errores en JavaScript

En muchas ocasiones nuestros programas en javascript fallan y generan indeseables mensajes de error, además es idóneo tener un mecanismo para poder manejar estos eventos. Para ello tenemos dos herramientas por un lado el evento onerror por otro lado la instrucción try...catch.

Estas estructuras son válidas desde las siguientes versiones de navegadores: IE5+, Mozilla 1.0, y Netscape 6. Así que su ámbito es lo suficientemente amplio como para poder implementarlo sin miedo.

La instrucción try...catch tiene la siguiente forma:

try
{
//Código que se ejecuta y que es posible que falle.
}
catch(err)
{
//Código para poder controlar el error.
}


El parámetro err de catch contiene una descripción del error. De manera que si imprimimos err.description tendremos una descripción.
Si necesitamos manejar varios posibles errores podemos hacer uso de la instrucción throw(exception). El código resultante tendría la siguiente forma:


try
{
if(x>10)
throw "Err1"
else
throw "Err2"
}
catch(err)
{
if (err == "Err1")
alert("Error 1");
if (err == "Err2")
alert("Error 2");
}


Para el manejo de onerror nada mejor que un ejemplo:

window.onerror= manejador;
function manejador(msj,url,linea)
{
var texto="Se ha producido el siguiente error:\n";
texto+= msj + "\n";
texto+="(URL: " + url + ". Línea " + linea + ")";
alert(texto);
return true;
}

Como vemos para el evento onerror del objeto window se le asigna una función que recibe tres parámetros, 'msj' mensaje del error, 'url' donde se produce el error y 'linea' que es la línea en la que se produce. Es el tipo de información 'amable' que nos proporciona cualquier navegador.

Más información en:
http://www.w3schools.com/js/js_try_catch.asp

No hay comentarios: