--- title: Error slug: Web/JavaScript/Reference/Global_Objects/Error translation_of: Web/JavaScript/Reference/Global_Objects/Error original_slug: Web/JavaScript/Referencia/Objectes_globals/Error ---
El constructor Error
crea un objecte que representa un error. Quan succeeix un error en temps d'execució JavaScript llença una instància de tipus Error
. L'objecte Error
també es pot emprar com a objecte base per a excepcions definides per l'usuari. Vegeu més abaix per a tipus d'errors standard que forment part del nucli.
new Error([missatge[, fitxer[, numeroLinia]]])
missatge
fitxer
{{non-standard_inline}}fitxer
a l'objecte Error
creat. Per defecte pren el valor del nom del fitxer que conté el codi que ha cridat el constructor Error()
.numeroLinia
{{non-standard_inline}}Error
creat. Per defecte rep el valor del número de línia que conté la invocació al constructor Error()
.Els errors en temps d'execució esdevenen objectes Error
nous que són creats i llençats.
Aquesta pàgina documenta l'ús de l'objecte Error
en si mateix, així com el seu ús com funció constructora. Per a un llistat de les propietats i mètodes heretats per les instàncies de Error
, vegeu {{jsxref("Error.prototype")}}.
A més del construtor genèric Error
hi ha altres sis constructors d'errors que formen part del nucli de JavaScript. Per a excepcions al cantó del client vegeu Sentències manegadores d'excepcions.
Error
.L'objecte global Error no contè mètodes propis. Tot i així, hereta alguns mètodes a través de la cadena de prototipus.
Instàncies Error
Normalment hom crea un objecte Error amb la intenció de llençar-lo tot emprant la paraula clau {{jsxref("Statements/throw", "throw")}}. Els errors es poden manegar utilitzant la construcció {{jsxref("Statements/try...catch", "try...catch")}}:
try { throw new Error('Oooops!'); } catch (e) { alert(e.name + ': ' + e.message); }
this should probably be removedEs pot escollir fer-se càrrec només de tipus d'errors específics comparant el tipus d'error amb la propietat {{jsxref("Object.prototype.constructor", "constructor")}} de l'error o bé, si s'està escrivint el codi per a motors JavaScript moderns, mitjançant la paraula clau {{jsxref("Operators/instanceof", "instanceof")}}:
try { foo.bar(); } catch (e) { if (e instanceof EvalError) { alert(e.name + ': ' + e.message); } else if (e instanceof RangeError) { alert(e.name + ': ' + e.message); } // ... etc }
És possible definir tipus d'errors propis derivats de Error, llençar-los mitjançant throw new MyError()
i utilitzar instanceof MyError
per a comprovarel tipus d'error al manegador d'excepcions. A sota trobareu la forma més comuna de fer això.
Advertim que la instància MyError
llençada reportarà lineNumber
i fileName
invàlids, com a mínim a Firefox.
Vegeu també la discussió a StackOverflow "Quina és una bona forma d'extrendre Error a JavaScript?".
// Crea un nou objecte, que hereta del prototipus constructor Error. function MyError(message) { this.name = 'MyError'; this.message = message || 'Missatge per defecte'; } MyError.prototype = Object.create(Error.prototype); MyError.prototype.constructor = MyError; try { throw new MyError(); } catch (e) { console.log(e.name); // 'MyError' console.log(e.message); // 'Missatge per defecte' } try { throw new MyError('custom message'); } catch (e) { console.log(e.name); // 'MyError' console.log(e.message); // 'Missatge per defecte' }
Especificació | Estat | Comentaris |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Definició inicial. Implementat a JavaScript 1.1. |
{{SpecName('ES5.1', '#sec-15.11', 'Error')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-error-objects', 'Error')}} | {{Spec2('ES6')}} |
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |