Ejemplo de la primera posibilidad:
Código:
  
Ejemplo de la segunda posibilidad:// 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;
   }
}
Código:
  
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?// Código de la aplicación
function foo(string) {
// Creamos y levantamos el error
   if(typeof(string) != "string") {
      throw new Error("ArgumentError");
   }
}
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.
 
