JavaScript tente… pegue

Resumo : neste tutorial, você aprenderá como usar a try...catchinstrução JavaScript para lidar com exceções.

Introdução à instrução try…catch de JavaScript

O exemplo a seguir tenta chamar a add()função que não existe:

let result = add(10, 20);
console.log(result);

console.log('Bye');
Linguagem de código:  JavaScript  ( javascript )

E o mecanismo JavaScript emite o seguinte erro:

Uncaught TypeError: add is not a functionLinguagem de código:  JavaScript  ( javascript )

A mensagem de erro informa que addnão é uma função e o tipo de erro é TypeError.

Quando o mecanismo JavaScript encontra um erro, ele emite esse erro e encerra imediatamente a execução de todo o script. No exemplo acima, a execução do código para na primeira linha.

Às vezes, você deseja tratar o erro e continuar a execução. Para fazer isso, você usa a try...catchinstrução com a seguinte sintaxe:

try {
  // code may cause error
} catch(error){
  // code to handle error
}Linguagem de código:  JavaScript  ( javascript )

Nesta sintaxe:

  • Primeiro, coloque o código que pode causar erro no trybloco.
  • Segundo, implemente a lógica para tratar o erro no catchbloco.

Se ocorrer um erro no trybloco, o mecanismo JavaScript executa imediatamente o código do catchbloco. Além disso, o mecanismo JavaScript fornece um objeto de erro que contém informações detalhadas sobre o erro.

Basicamente, o objeto de erro possui pelo menos duas propriedades:

  • nameespecifica o nome do erro.
  • messageexplica o erro em detalhes.

Se nenhum erro ocorrer no trybloco, o mecanismo JavaScript ignora o catchbloco.

Observe que os navegadores da web podem adicionar mais propriedades ao errorobjeto. Por exemplo, o Firefox adiciona propriedades filename, lineNumbere stackao errorobjeto.

É uma boa prática colocar apenas o código que pode causar uma exceção no trybloco.

O fluxograma a seguir ilustra como a try...catchinstrução funciona:

Exemplos de instruções try…catch de JavaScript

O exemplo a seguir usa a try...catchinstrução para tratar o erro:

try {
  let result = add(10, 20);
  console.log(result);
} catch (e) {
  console.log({ name: e.name, message: e.message });
}
console.log('Bye');Linguagem de código:  JavaScript  ( javascript )

Saída

{name: 'TypeError', message: 'add is not a function'}
ByeLinguagem de código:  CSS  ( css )

Neste exemplo, chamamos a add()função e atribuímos o valor de retorno à resultvariável. Como a add()função não existe, o mecanismo JavaScript ignora a instrução que envia o resultado para o console:

console.log(result);Linguagem de código:  JavaScript  ( javascript )

E executa imediatamente a instrução no catchbloco que gera o nome e a mensagem do erro:

console.log({ name: e.name, message: e.message });Linguagem de código:  CSS  ( css )

Como já tratamos o erro, o mecanismo JavaScript continua executando a última instrução:

console.log('Bye');Linguagem de código:  JavaScript  ( javascript )

Ignorando o bloco catch

O exemplo a seguir define a add()função que retorna a soma de dois argumentos:

const add = (x, y) => x + y;

try {
  let result = add(10, 20);
  console.log(result);
} catch (e) {
  console.log({ name: e.name, message: e.message });
}
console.log('Bye');Linguagem de código:  JavaScript  ( javascript )

Saída:

30
Bye

Neste exemplo, nenhum erro ocorre porque a add()função existe. Portanto, o mecanismo JavaScript ignora o catchbloco.

O identificador de exceção

Quando ocorre uma exceção no bloco try, a variável de exceção (e) no bloco catch armazena o objeto de exceção.

Se não quiser usar a variável de exceção, você pode omiti-la assim:

try {
  //...
} catch {
  //...
}
Linguagem de código:  JavaScript  ( javascript )

Por exemplo, o seguinte usa a instrução try…catch sem a variável de exceção:

const isValidJSON = (str) => {
  try {
    JSON.parse(str);
    return true;
  } catch {
    return false;
  }
};

let valid = isValidJSON(`{"language":"JavaScript"}`);
console.log(valid);Linguagem de código:  JavaScript  ( javascript )

Como funciona.

Primeiro, defina a isValidJSON()função que aceita uma string e retorna truese essa string for um JSON válido ou falsenão.

Para validar JSON, a isValidJSON()função usa o JSON.parse()método e try...catcha instrução.

O método JSON.parse() analisa uma string JSON e retorna um objeto. Se a string de entrada não for JSON válida, será JSON.parse()lançada uma exceção.

Se nenhuma exceção ocorrer, a função retorna trueno trybloco. Caso contrário, ele retorna falseno catchbloco.

Segundo, chame a isValidJSON()função e passe uma string JSON para ela:

let valid = isValidJSON(`{"language":"JavaScript"}`);Linguagem de código:  JavaScript  ( javascript )

Como a string de entrada tem um formato JSON válido, a função retorna true.

Terceiro, envie resultpara o console:

console.log(valid);Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a try...catchinstrução para lidar com exceções em JavaScript.
  • Coloque apenas o código que pode causar uma exceção no trybloco.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *