English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ao executar código JavaScript, podem ocorrer erros inesperados.
Os erros podem ser erros de codificação feitos pelo programador, erros causados por entradas incorretas e outros eventos inesperados.
Portanto, para lidar com erros, o JavaScript oferece4Palavras-chave:
A sentença try permite que você teste se um bloco de código contém erros
A sentença catch permite que você lidar com erros
A sentença throw permite que você crie erros personalizados
A sentença finally permite que você execute código após tentar e capturar, independentemente do resultado.
Neste exemplo, escrevemos "alert" como "aaalert" propositalmente para gerar um erro:
try { aaalert("Hello world"); } document.getElementById("result").innerHTML = e.name + "<br>" + e.message; }Teste veja‹/›
Quando um erro ocorre, o JavaScript geralmente para de executar e cria um objeto com duas propriedadesObjeto Error:nome e mensagem.
A sentença try permite que você defina um bloco de código que será testado por erros durante a execução.
Se um erro ocorrer dentro do bloco try, a sentença catch permite que você defina um bloco de código a ser executado.
As sentenças JavaScript try e catch aparecem em pares:
try { //try_statements-Sentença a tentar }catch(err){ //catch_statements-Sentença de tratamento de erro }
A instrução throw lança exceções definidas pelo usuário.
A instrução throw permite criar erros personalizados. Técnicamente, isso é chamado de "Lançar exceção ".
As exceções podem ser strings JavaScript, números, valores booleanos ou objetos:
throw "Invalid"; // Gerar exceção com valor de string throw 32; // Gerar valor32a exceção throw true; // Gerar exceção com valor true
Se o throw for usado com o try e catch, você pode especificar o fluxo do programa e gerar mensagens de erro personalizadas.
Neste exemplo, se qualquer parâmetro não numérico for passado, o getRectArea() lançará uma mensagem de erro personalizada:
function getRectArea(width, height) { if (isNaN(width) || isNaN(height)) { throw "Parameter is not a number!"; } } try { getRectArea(5, &39;Z'); } catch(err) { document.getElementById('para').innerHTML = err; }Teste veja‹/›
Neste exemplo, se o valor for incorreto, uma exceção (err) é lançada. A instrução catch captura a exceção (err) e exibe uma mensagem de erro personalizada:
var x = document.querySelector("input").value; try { if(x == "") throw "is Empty"; if(isNaN(x)) throw "Not a Number"; if(x > 10) throw "too High"; if(x < 5)throw "too Low"; } catch(err) { document.getElementById("para").innerHTML = "Input " + err; }Teste veja‹/›
A instrução finally permite que você execute código após o try e catch, independentemente do resultado.
try { aaalert("Hello world"); } catch(err) { document.getElementById("result").innerHTML = err; } finally { document.getElementById("result").innerHTML += "<h3>Finally statement executed</h3>"; }Teste veja‹/›
As instruções catch e finally são opcionais, mas você precisa usar uma delas (se não forem ambas), juntamente com a instrução try:
try { aaalert("Hello world"); } finally { document.getElementById("result").innerHTML = "Finally statement executed"; }Teste veja‹/›
O JavaScript possui um objeto Error integrado, que fornece informações de erro quando ocorre um erro.
O objeto Error fornece duas propriedades úteis: name e message.
A tabela a seguir lista as propriedades do objeto Error:
Propriedade | Descrição |
---|---|
nome | Definir ou retornar o nome do erro |
mensagem | Definir ou retornar a mensagem de erro |
A propriedade error name pode retornar sete valores diferentes:
Tipo | Descrição |
---|---|
EvalError | Representa o erro relacionado à função global eval() |
InternalError | Representa o erro ocorrido ao lançar um erro interno no motor do JavaScript |
RangeError | Representa o erro ocorrido quando uma variável ou parâmetro numérico está fora de seu intervalo válido |
ReferenceError | Representa o erro ocorrido ao tentar cancelar uma referência inválida |
SyntaxError | Representa o erro ocorrido ao analisar código dentro do eval() |
TypeError | Representa o erro ocorrido quando uma variável ou parâmetro não é do tipo válido |
URIError | Representa o erro ocorrido ao passar parâmetros inválidos para encodeURI() ou decodeURI() |
A próxima seção apresentará detalhes sobre cada um desses tipos de erro.
Quando atravéseval()Um EvalError é lançado quando ocorre um erro durante a execução da função.
No entanto, o JavaScript não lança mais esse erro, mas mantém esse objeto para compatibilidade com versões anteriores.
Versões mais recentes do JavaScript não lançam exceções EvalError. Use SyntaxError em vez disso.
Quando você usar um número fora do intervalo permitido, será lançado um RangeError.
Por exemplo, criar um array com comprimento negativo lançará um RangeError:
try { var arr = new Array(-1); // lança um erro de intervalo } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Teste veja‹/›
Quando você tenta referenciar ou acessar uma variável ou objeto inexistente, geralmente é lançado um ReferenceError.
try { var x == 5 + y; // Lança um erro de referência } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Teste veja‹/›
Se seu código JavaScript tiver algum problema de sintaxe, um SyntaxError será gerado no tempo de execução.
try { eval("alert('Hello)"); // Faltando 'will throw an error } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Teste veja‹/›
Quando o valor não é do tipo esperado, lança um TypeError.
var num = 50; try { num.toUpperCase(); // Você não pode converter um número para letra maiúscula } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Teste veja‹/›
Quando você especificar um URI (Identificador de Recursos Uniforme) inválido, será gerado um URIError.
try { decodeURI("%"); // Você não pode decodificar o caractere de porcentagem URI } document.getElementById("result").innerHTML = err.name + "<br>" + err.message; }Teste veja‹/›
Para referência completa de propriedades e métodos, acesse nossoReferência de erro JavaScript.
A parte de referência contém descrições e exemplos de todas as propriedades e tipos de Error.