Instrução try/catch/finally em JavaScript

Definição e uso

A instrução try/catch/finally trata parte ou todos os erros que podem ocorrer no bloco de código, continuando a executar o código.

Os erros podem ser causados por erros de codificação do programador, erros de entrada incorretos e outras situações imprevisíveis.

A instrução try permite que você defina um bloco de código que deve ser testado durante a execução para erros.

Se ocorrer um erro no bloco try, a instrução catch permite que você defina o bloco de código a ser executado.

A instrução finally permite que você execute código após o try e catch, independentemente do resultado.

Notas:As instruções catch e finally são opcionais, mas ao usar a instrução try, é necessário usar uma delas (a menos que sejam usadas simultaneamente).

Dica:Quando ocorre um erro, o JavaScript geralmente para e gera uma mensagem de erro. Use a instrução throw para criar erros personalizados (lançar exceções). Se usar throw com try e catch, você pode controlar o fluxo do programa e gerar mensagens de erro personalizadas.

Para mais informações sobre erros do JavaScript, aprenda o tutorial de erros do JavaScript.

Exemplo

Neste exemplo, cometemos um erro de digitação no código.

Este exemplo deve prompt "Welcome guest!", mas houve um erro na ortografia do alert.

O bloco catch captura o erro e executa o código para lidar com ele:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

Experimente pessoalmente

Mais exemplos TIY estão na parte inferior da página.

Sintaxe

try {
  tryCode - Bloco de código a ser tentado
}
catch(err) {
  catchCode - Bloco de código para lidar com erros
} 
finally {
  finallyCode - Bloco de código a ser executado independentemente do resultado de try / catch
}

Valor do parâmetro

Parâmetro Descrição
tryCode Obrigatório. Bloco de código a ser testado durante a execução para verificar o erro.
err Obrigatório, se usado com catch. Especifica a variável local de referência do erro. Esta variável pode referenciar o objeto Error (que contém informações sobre o erro ocorrido, por exemplo, a mensagem "'addlert' is not defined"). Se a exceção for criada por uma instrução throw, a variável se refere ao objeto especificado na instrução throw (veja "Mais exemplos").
catchCode Opcional. Bloco de código a ser executado se ocorrer um erro no bloco try. Se não ocorrer erro, este bloco nunca será executado.
finallyCode Opcional. Bloco de código a ser executado independentemente do resultado de try / catch.

Detalhes técnicos

Versão do JavaScript: ECMAScript 3

Mais exemplos

Exemplo

Este exemplo verifica a entrada. Se o valor estiver errado, lança uma exceção (err).

A declaração catch captura exceções (err) e exibe mensagens de erro personalizadas:

<!DOCTYPE html>
<html>
<body>
<p>Por favor, insira um número entre 5 e 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Testar Entrada</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").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) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

Experimente pessoalmente

Exemplo

A declaração finally permite que você execute código após o try e catch, independentemente do resultado:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Empty";
    if(isNaN(x)) throw "Not a number";
    if(x > 10) throw "Too high";
    if(x < 5) throw "Too low";
  }
  catch(err) {
    message.innerHTML = "Erro: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

Experimente pessoalmente

navegador suporta

语句 Chrome IE Firefox Safari Opera
try/catch/finally Suporte Suporte Suporte Suporte Suporte

Páginas relacionadas

Tutorial de JavaScript:Erro do JavaScript

Manual de referência do JavaScript:Sentença throw do JavaScript