[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Error#tipos_error [Back]  [Original]

Error - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Error

Baseline Widely available *

This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.

* Some parts of this feature may have varying levels of support.

Los objetos Error se lanzan cuando ocurren errores en tiempo de ejecucin. Tambin puedes utilizar el objeto Error como objeto base para excepciones definidas por el usuario. Ve ms adelante los tipos de errores estndar integrados.

In this article

Descripcin

Los errores en tiempo de ejecucin dan como resultado la creacin y lanzamiento de nuevos objetos Error.

Tipos Error

Adems del constructor genrico Error, hay otros siete constructores de errores en el ncleo de JavaScript. Para conocer las excepciones de lado del cliente, consulta Declaraciones para el manejo de excepciones.

EvalError

Crea una instancia que representa un error que ocurre con respecto a la funcin global eval().

InternalError

Crea una instancia que representa un error que ocurre cuando se produce un error interno en el motor de JavaScript. Por ejemplo: "demasiada recursividad".

RangeError

Crea una instancia que representa un error que ocurre cuando una variable numrica o parmetro est fuera de su rango vlido.

ReferenceError

Crea una instancia que representa un error que ocurre cuando se quita la referencia a una referencia no vlida.

SyntaxError

Crea una instancia que representa un error de sintaxis.

TypeError

Crea una instancia que representa un error que ocurre cuando una variable o parmetro no es de un tipo vlido.

URIError

Crea una instancia que representa un error que ocurre cuando encodeURI() o decodeURI() pasan parmetros no vlidos.

Constructor

Error()

Crea un nuevo objeto Error.

Mtodos estticos

Error.captureStackTrace()

Una funcin V8 no estndar que crea la propiedad stack en una instancia de Error.

Propiedades de la instancia

Error.prototype.message

Mensaje de error.

Error.prototype.name

Nombre del error.

Error.prototype.description

Una propiedad no estndar de Microsoft para la descripcin del error. Similar a message.

Error.prototype.number

Una propiedad no estndar de Microsoft para un nmero de error.

Error.prototype.fileName

Una propiedad no estndar de Mozilla para la ruta al archivo que gener este error.

Error.prototype.lineNumber

Una propiedad no estndar de Mozilla para el nmero de lnea en el archivo que gener este error.

Error.prototype.columnNumber

Una propiedad no estndar de Mozilla para el nmero de columna en la lnea que gener este error.

Error.prototype.stack

Una propiedad no estndar de Mozilla para un seguimiento de la pila.

Mtodos de instancia

Error.prototype.toString()

Devuelve una cadena que representa el objeto especificado. Redefine el mtodo Object.prototype.toString().

Ejemplos

Lanzar un error genrico

Normalmente, creas un objeto Error con la intencin de generarlo utilizando la palabra clave throw. Puedes manejar el error usando la construccin try...catch:

js
try {
  throw new Error("Ups!");
} catch (e) {
  console.error(e.name + ": " + e.message);
}

Manejar de un error especfico

Puede elegir manejar solo tipos de error especficos probando el tipo de error con la propiedad constructor del error o, si ests escribiendo para motores JavaScript modernos, la palabra clave instanceof:

js
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
}

Tipos Error personalizados

Posiblemente desees definir tus propios tipos de error derivados de Error para poder lanzarlo con throw new MyError() y usar instanceof MyError para verificar el tipo de error en el controlador de excepciones. Esto da como resultado un cdigo de manejo de errores ms limpio y consistente.

Consulta "Cul es una buena manera de extender Error en JavaScript?" en StackOverflow para una discusin en profundidad.

Clase Error personalizado en ES6

Advertencia: Las versiones de Babel anteriores a la 7 pueden manejar mtodos de clase CustomError, pero solo cuando se declaran con Object.defineProperty(). De lo contrario, las versiones antiguas de Babel y otros transpiladores no manejarn correctamente el siguiente cdigo sin configuracin adicional.

Nota: Algunos navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se utilizan clases de ES2015.

js
class CustomError extends Error {
  constructor(foo = "bar", ...params) {
    // Pasa los argumentos restantes (incluidos los especficos 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";
    // Informacin de depuracin 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
}

Objeto Error personalizado ES5

Advertencia: Todos los navegadores incluyen el constructor CustomError en el seguimiento de la pila cuando se usa una declaracin de prototipo.

js
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 2027 LanguageSpecification
# sec-error-objects

Compatibilidad con navegadores

Ve tambin


Web Proxy Viewer  |  New URL  |  Original Page