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.