Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
Error
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
* Some parts of this feature may have varying levels of support.
Los objetosError se lanzan cuando ocurren errores en tiempo de ejecución. También puedes utilizar el objetoError como objeto base para excepciones definidas por el usuario. Ve más adelante los tipos de errores estándar integrados.
In this article
Descripción
Los errores en tiempo de ejecución dan como resultado la creación y lanzamiento de nuevos objetosError.
TiposError
Además del constructor genéricoError, hay otros siete constructores de errores en el núcleo de JavaScript. Para conocer las excepciones de lado del cliente, consultaDeclaraciones para el manejo de excepciones.
EvalErrorCrea una instancia que representa un error que ocurre con respecto a la función global
eval().InternalErrorCrea una instancia que representa un error que ocurre cuando se produce un error interno en el motor de JavaScript. Por ejemplo: "demasiada recursividad".
RangeErrorCrea una instancia que representa un error que ocurre cuando una variable numérica o parámetro está fuera de su rango válido.
ReferenceErrorCrea una instancia que representa un error que ocurre cuando se quita la referencia a una referencia no válida.
SyntaxErrorCrea una instancia que representa un error de sintaxis.
TypeErrorCrea una instancia que representa un error que ocurre cuando una variable o parámetro no es de un tipo válido.
URIErrorCrea una instancia que representa un error que ocurre cuando
encodeURI()odecodeURI()pasan parámetros no válidos.
Constructor
Error()Crea un nuevo objeto
Error.
Métodos estáticos
Error.captureStackTrace()Una funciónV8 no estándar que crea la propiedad
stacken una instancia deError.
Propiedades de la instancia
Error.prototype.messageMensaje de error.
Error.prototype.nameNombre del error.
Error.prototype.descriptionUna propiedad no estándar de Microsoft para la descripción del error. Similar a
message.Error.prototype.numberUna propiedad no estándar de Microsoft para un número de error.
Error.prototype.fileNameUna propiedad no estándar de Mozilla para la ruta al archivo que generó este error.
Error.prototype.lineNumberUna propiedad no estándar de Mozilla para el número de línea en el archivo que generó este error.
Error.prototype.columnNumberUna propiedad no estándar de Mozilla para el número de columna en la línea que generó este error.
Error.prototype.stackUna propiedad no estándar de Mozilla para un seguimiento de la pila.
Métodos de instancia
Error.prototype.toString()Devuelve una cadena que representa el objeto especificado. Redefine el método
Object.prototype.toString().
Ejemplos
>Lanzar un error genérico
Normalmente, creas un objetoError con la intención de generarlo utilizando la palabra clavethrow. Puedes manejar el error usando la construccióntry...catch:
try { throw new Error("¡Ups!");} catch (e) { console.error(e.name + ": " + e.message);}Manejar de un error específico
Puede elegir manejar solo tipos de error específicos probando el tipo de error con la propiedadconstructor del error o, si estás escribiendo para motores JavaScript modernos, la palabra claveinstanceof:
try { foo.bar();} catch (e) { if (e instanceof EvalError) { console.error(e.name + ": " + e.message); } else if (e instanceof RangeError) { console.error(e.name + ": " + e.message); } // ... etc}TiposError personalizados
Posiblemente desees definir tus propios tipos de error derivados deError para poder lanzarlo conthrow new MyError() y usarinstanceof MyError para verificar el tipo de error en el controlador de excepciones. Esto da como resultado un código de manejo de errores más limpio y consistente.
Consulta"¿Cuál es una buena manera de extenderError en JavaScript?" en StackOverflow para una discusión en profundidad.
ClaseError personalizado en ES6
Advertencia:Las versiones de Babel anteriores a la 7 pueden manejar métodos de claseCustomError, pero solo cuando se declaran conObject.defineProperty(). De lo contrario, las versiones antiguas de Babel y otros transpiladores no manejarán correctamente el siguiente código sinconfiguración adicional.
Nota:Algunos navegadores incluyen el constructorCustomError en el seguimiento de la pila cuando se utilizan clases de ES2015.
class CustomError extends Error { constructor(foo = "bar", ...params) { // Pasa los argumentos restantes (incluidos los específicos del proveedor) al constructor padre super(...params); // Mantiene un seguimiento adecuado de la pila para el lugar donde se lanzó nuestro error (solo disponible en V8) if (Error.captureStackTrace) { Error.captureStackTrace(this, CustomError); } this.name = "CustomError"; // Información de depuración personalizada this.foo = foo; this.date = new Date(); }}try { throw new CustomError("baz", "bazMessage");} catch (e) { console.error(e.name); // CustomError console.error(e.foo); // baz console.error(e.message); // bazMessage console.error(e.stack); // stacktrace}ObjetoError personalizado ES5
Advertencia:Todos los navegadores incluyen el constructorCustomError en el seguimiento de la pila cuando se usa una declaración de prototipo.
function CustomError(foo, message, fileName, lineNumber) { var instance = new Error(message, fileName, lineNumber); instance.name = "CustomError"; instance.foo = foo; Object.setPrototypeOf(instance, Object.getPrototypeOf(this)); if (Error.captureStackTrace) { Error.captureStackTrace(instance, CustomError); } return instance;}CustomError.prototype = Object.create(Error.prototype, { constructor: { value: Error, enumerable: false, writable: true, configurable: true, },});if (Object.setPrototypeOf) { Object.setPrototypeOf(CustomError, Error);} else { CustomError.__proto__ = Error;}try { throw new CustomError("baz", "bazMessage");} catch (e) { console.error(e.name); // CustomError console.error(e.foo); // baz console.error(e.message); // bazMessage}Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-error-objects> |