aboutsummaryrefslogtreecommitdiff
path: root/files/es/web/javascript/referencia/objetos_globales/error/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/es/web/javascript/referencia/objetos_globales/error/index.html')
-rw-r--r--files/es/web/javascript/referencia/objetos_globales/error/index.html219
1 files changed, 219 insertions, 0 deletions
diff --git a/files/es/web/javascript/referencia/objetos_globales/error/index.html b/files/es/web/javascript/referencia/objetos_globales/error/index.html
new file mode 100644
index 0000000000..03cbd038da
--- /dev/null
+++ b/files/es/web/javascript/referencia/objetos_globales/error/index.html
@@ -0,0 +1,219 @@
+---
+title: Error
+slug: Web/JavaScript/Referencia/Objetos_globales/Error
+tags:
+ - Error
+ - JavaScript
+translation_of: Web/JavaScript/Reference/Global_Objects/Error
+---
+<div>{{JSRef}}</div>
+
+<p>Los objetos <code>Error</code> se lanzan cuando ocurren errores en tiempo de ejecución. También puedes utilizar el objeto <code>Error</code> como objeto base para excepciones definidas por el usuario. Ve más adelante los tipos de errores estándar integrados.</p>
+
+<h2 id="Descripción">Descripción</h2>
+
+<p>Los errores en tiempo de ejecución dan como resultado la creación y lanzamiento de nuevos objetos <code>Error</code>.</p>
+
+<h3 id="Tipos_Error">Tipos <code>Error</code></h3>
+
+<p>Además del constructor genérico <code>Error</code>, hay otros siete constructores de errores en el núcleo de JavaScript. Para conocer las excepciones de lado del cliente, consulta {{JSxRef("../Guide/Control_de_flujo_y_manejo_de_errores", "Declaraciones para el manejo de excepciones", "#Sentencias_de_manejo_de_excepciones", 1)}}.</p>
+
+<dl>
+ <dt>{{JSxRef("EvalError")}}</dt>
+ <dd>Crea una instancia que representa un error que ocurre con respecto a la función global {{JSxRef("eval", "eval()")}}.</dd>
+ <dt>{{JSxRef("InternalError")}} </dt>
+ <dd>Crea una instancia que representa un error que ocurre cuando se produce un error interno en el motor de JavaScript. Por ejemplo: "demasiada recursividad".</dd>
+ <dt>{{JSxRef("RangeError")}}</dt>
+ <dd>Crea una instancia que representa un error que ocurre cuando una variable numérica o parámetro está fuera de su rango válido.</dd>
+ <dt>{{JSxRef("ReferenceError")}}</dt>
+ <dd>Crea una instancia que representa un error que ocurre cuando se quita la referencia a una referencia no válida.</dd>
+ <dt>{{JSxRef("SyntaxError")}}</dt>
+ <dd>Crea una instancia que representa un error de sintaxis.</dd>
+ <dt>{{JSxRef("TypeError")}}</dt>
+ <dd>Crea una instancia que representa un error que ocurre cuando una variable o parámetro no es de un tipo válido.</dd>
+ <dt>{{JSxRef("URIError")}}</dt>
+ <dd>Crea una instancia que representa un error que ocurre cuando {{JSxRef("encodeURI", "encodeURI()")}} o {{JSxRef("decodeURI", "decodeURI()")}} pasan parámetros no válidos.</dd>
+</dl>
+
+<h2 id="Constructor">Constructor</h2>
+
+<dl>
+ <dt>{{JSxRef("Objetos_globales/Error/Error", "Error()")}}</dt>
+ <dd>Crea un nuevo objeto <code>Error</code>.</dd>
+</dl>
+
+<h2 id="Métodos_estáticos">Métodos estáticos</h2>
+
+<dl>
+ <dt>{{JSxRef("Error.captureStackTrace()")}}</dt>
+ <dd>Una función <strong>V8</strong> no estándar que crea la propiedad {{JSxRef("Error.prototype.stack", "stack")}} en una instancia de <code>Error</code>.</dd>
+</dl>
+
+<h2 id="Propiedades_de_la_instancia">Propiedades de la instancia</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.message")}}</dt>
+ <dd>Mensaje de error.</dd>
+ <dt>{{jsxref("Error.prototype.name")}}</dt>
+ <dd>Nombre del error.</dd>
+ <dt>{{jsxref("Error.prototype.description")}}</dt>
+ <dd>Una propiedad no estándar de Microsoft para la descripción del error. Similar a {{jsxref("Error.prototype.message", "message")}}.</dd>
+ <dt>{{jsxref("Error.prototype.number")}}</dt>
+ <dd>Una propiedad no estándar de Microsoft para un número de error.</dd>
+ <dt>{{jsxref("Error.prototype.fileName")}}</dt>
+ <dd>Una propiedad no estándar de Mozilla para la ruta al archivo que generó este error.</dd>
+ <dt>{{JSxRef("Error.prototype.lineNumber")}}</dt>
+ <dd>Una propiedad no estándar de Mozilla para el número de línea en el archivo que generó este error.</dd>
+ <dt>{{JSxRef("Error.prototype.columnNumber")}}</dt>
+ <dd>Una propiedad no estándar de Mozilla para el número de columna en la línea que generó este error.</dd>
+ <dt>{{JSxRef("Error.prototype.stack")}}</dt>
+ <dd>Una propiedad no estándar de Mozilla para un seguimiento de la pila.</dd>
+</dl>
+
+<h2 id="Métodos_de_instancia">Métodos de instancia</h2>
+
+<dl>
+ <dt>{{jsxref("Error.prototype.toString()")}}</dt>
+ <dd>Devuelve una cadena que representa el objeto especificado. Redefine el método {{JSxRef("Object.prototype.toString()")}}.</dd>
+</dl>
+
+<h2 id="Ejemplos">Ejemplos</h2>
+
+<h3 id="Lanzar_un_error_genérico">Lanzar un error genérico</h3>
+
+<p>Normalmente, creas un objeto <code>Error</code> con la intención de generarlo utilizando la palabra clave {{JSxRef("Sentencias/throw", "throw")}}. Puedes manejar el error usando la construcción {{JSxRef("Sentencias/try...catch", "try...catch")}}:</p>
+
+<pre class="brush: js; notranslate">try {
+ throw new Error('¡Ups!')
+} catch (e) {
+ console.error(e.name + ': ' + e.message)
+}
+</pre>
+
+<h3 id="Manejar_de_un_error_específico">Manejar de un error específico</h3>
+
+<p>Puede elegir manejar solo tipos de error específicos probando el tipo de error con la propiedad {{JSxRef("Object.prototype.constructor", "constructor")}} del error o, si estás escribiendo para motores JavaScript modernos, la palabra clave {{JSxRef("Operators/instanceof", "instanceof")}}:</p>
+
+<pre class="brush: js; notranslate">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
+}
+</pre>
+
+<h3 id="Tipos_Error_personalizados">Tipos <code>Error</code> personalizados</h3>
+
+<p>Posiblemente desees definir tus propios tipos de error derivados de <code>Error</code> para poder lanzarlo con <code>throw new MyError()</code> y usar <code>instanceof MyError</code> 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. </p>
+
+<p>Consulta <a href="http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript">"¿Cuál es una buena manera de extender <code>Error</code> en JavaScript?"</a> en StackOverflow para una discusión en profundidad.</p>
+
+<h4 id="Clase_Error_personalizado_en_ES6">Clase <code>Error</code> personalizado en ES6</h4>
+
+<div class="blockIndicator warning">
+<p>Las versiones de Babel anteriores a la 7 pueden manejar métodos de clase <code>CustomError</code>, pero solo cuando se declaran con {{JSxRef("Objetos_globales/Object/defineProperty", "Object.defineProperty()")}}. De lo contrario, las versiones antiguas de Babel y otros transpiladores no manejarán correctamente el siguiente código sin <a href="https://github.com/loganfsmyth/babel-plugin-transform-builtin-extend">configuración adicional</a>.</p>
+</div>
+
+<div class="blockIndicator note">
+<p>Algunos navegadores incluyen el constructor <code>CustomError</code> en el seguimiento de la pila cuando se utilizan clases de ES2015.</p>
+</div>
+
+<pre class="brush: js notranslate">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
+}</pre>
+
+<h4 id="Objeto_Error_personalizado_ES5">Objeto <code>Error</code> personalizado ES5</h4>
+
+<div class="warning">
+<p><strong>Todos</strong> los navegadores incluyen el constructor <code>CustomError</code> en el seguimiento de la pila cuando se usa una declaración de prototipo.</p>
+</div>
+
+<pre class="brush: js notranslate">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
+}</pre>
+
+<h2 id="Especificaciones">Especificaciones</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Especificación</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Compatibilidad_del_navegador">Compatibilidad del navegador</h2>
+
+<div>
+<div class="hidden">La tabla de compatibilidad de esta página se genera a partir de datos estructurados. Si deseas contribuir con los datos, consulta <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> y envíanos una solicitud de extracción.</div>
+
+<p>{{Compat("javascript.builtins.Error")}}</p>
+</div>
+
+<h2 id="Ve_también">Ve también</h2>
+
+<ul>
+ <li>{{JSxRef("Sentencias/throw", "throw")}}</li>
+ <li>{{JSxRef("Sentencias/try...catch", "try...catch")}}</li>
+</ul>