Foros del Web » Programando para Internet » Javascript »

Manejo de errores con Error

Estas en el tema de Manejo de errores con Error en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/06/2009, 09:51
 
Fecha de Ingreso: junio-2009
Mensajes: 9
Antigüedad: 14 años, 10 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:30.