Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/06/2009, 09:51
jaumegs
 
Fecha de Ingreso: junio-2009
Mensajes: 9
Antigüedad: 15 años, 8 meses
Puntos: 0
Manejo de errores con Error

Pongamos el caso de que estamos programando una librería o un framework para JavaScript. Como buenos programadores hacemos uso del manejo de errores, pero nos surge un dilema: ¿Creo un objeto Error para cada tipo de error y retorno su referencia cuando se produzca o creo un objeto Error nuevo cada vez?

Ejemplo de la primera posibilidad:
Código:
// Creamos un objeto Error para cada tipo de error a manejar
var argumentError = new Error("argumentError");
// ...creamos todos los necesarios...

// Código de la aplicación
function foo(string) {
// Levantamos el error
   if(typeof(string) != "string") {
      throw argumentError;
   }
}
Ejemplo de la segunda posibilidad:
Código:
// Código de la aplicación
function foo(string) {
// Creamos y levantamos el error
   if(typeof(string) != "string") {
      throw new Error("ArgumentError");
   }
}
Con el segundo método, si el programador que hace uso de la librería no es muy habilidoso y comete muchos errores en el uso de la librería se crearán un montón de objetos Error y muchos de ellos repetidos. ¿El colector de basura es suficientemente fiable? ¿Se eliminan los nuevos objetos creados al perder toda referencia en tiempo de ejecución o se hace al final?

Haciendo uso del primer método se crean los objetos necesarios y se mantienen durante toda la ejecución, pero tiene un problema y es que si se modifica por error (o expresamente) el mensaje de error repercutirá en todos los errores posteriores del mismo tipo.

¿Cuál es el más indicado?¿Cuál utilizan los navegadores IE y Firefox?

Gracias de antemano.