--- title: Error slug: Web/JavaScript/Reference/Global_Objects/Error tags: - Custom Error - Erro - Error - JavaScript - Reference - Referencia translation_of: Web/JavaScript/Reference/Global_Objects/Error ---
O construtor de Error cria um objeto de erro. Instâncias de objetos Error são lançadas quando erros de tempo de execução ocorrem. O objeto Error também pode ser usado como objeto base para exceções definidas pelo usuário. Veja abaixo tipos de erro padrões embutidos.
new Error([message[, fileName[, lineNumber]]])
messagefileName {{non-standard_inline}}fileName no objeto de erro criado. O padrão é o nome do arquivo contendo o código que chamou o construtor de Error().lineNumber {{non-standard_inline}}lineNumber no objeto de Error criado. O padrão é o número da linha contendo a invocação do construtor Error().Erros em tempo de execução resultam em novos objetos Error sendo criados e lançados.
Esta página documenta o uso do objeto Error em si e seu uso como uma função construtora. Para uma lista de propriedades e métodos herdados por instâncias de Error, veja {{jsxref("Error.prototype")}}.
Além do construtor genérico de Error, existem outros seis construtores principais de erro no JavaScript. Para exceções em client-side, veja Exceções na captura de Instruções.
Error.O objeto Error global não contém métodos próprios, entretanto, ele herda alguns métodos através da cadeia de prototypes.
Instâncias de ErrorGeralmente você cria um objeto Error com a intenção de lançá-lo usando a palavra-chave {{jsxref("Statements/throw", "throw")}}. Você pode capturar o erro usando uma construção de {{jsxref("Statements/try...catch", "try...catch")}}:
try {
throw new Error('Oooops!');
} catch (e) {
alert(e.name + ': ' + e.message);
}
Você pode escolher por capturar apenas tipos de erro específicos testando o tipo do erro com a propriedade {{jsxref("Object.prototype.constructor", "constructor")}} de erro ou, se você está escrevendo para engines de JavaScript modernas, a palavra-chave {{jsxref("Operators/instanceof", "instanceof")}}:
try {
Objeto.Metodo();
} catch (e) {
if (e instanceof EvalError) {
alert(e.name + ': ' + e.message);
} else if (e instanceof RangeError) {
alert(e.name + ': ' + e.message);
}
// ... etc
}
Você pode escolher definir seus próprios tipos de erro derivando de Error para conseguir usar throw new MeuErro() e usar instanceof MeuErro para checar o tipo de erro na captura da exceção. A forma comum para isso está demonstrada abaixo
Note que as instâncias MeuErro lançadas vão reportar valores de lineNumber e fileName incorretos, ao menos no Firefox.
Veja também "esta discussão no Stackoverflow (em inglês): What's a good way to extend Error in JavaScript?".
// Cria um novo objeto que herda o construtor de Error através do prototype.
function MeuErro(message) {
this.name = 'MeuErro';
this.message = message || 'Mensagem de erro padrão';
this.stack = (new Error()).stack;
}
MeuErro.prototype = Object.create(MeuErro.prototype);
MeuErro.prototype.constructor = MeuErro;
try {
throw new MeuErro();
} catch (e) {
console.log(e.name); // 'MeuErro'
console.log(e.message); // 'Mensagem de erro padrão'
}
try {
throw new MeuErro('Mensagem customizada');
} catch (e) {
console.log(e.name); // 'MeuErro'
console.log(e.message); // 'Mensagem customizada'
}
| Especificação | Status | Comentário |
|---|---|---|
| {{SpecName('ES1')}} | {{Spec2('ES1')}} | Definição inicial. Implementada no JavaScript 1.1. |
| {{SpecName('ES5.1', '#sec-15.11', 'Error')}} | {{Spec2('ES5.1')}} | |
| {{SpecName('ES6', '#sec-error-objects', 'Error')}} | {{Spec2('ES6')}} |
| Recurso | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suporte básico | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
| Recurso | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suporte básico | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |