Resumo : neste tutorial, você aprenderá como usar a try...catch
instruçã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 function
Linguagem de código: JavaScript ( javascript )
A mensagem de erro informa que add
nã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...catch
instruçã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
try
bloco. - Segundo, implemente a lógica para tratar o erro no
catch
bloco.
Se ocorrer um erro no try
bloco, o mecanismo JavaScript executa imediatamente o código do catch
bloco. 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:
name
especifica o nome do erro.message
explica o erro em detalhes.
Se nenhum erro ocorrer no try
bloco, o mecanismo JavaScript ignora o catch
bloco.
Observe que os navegadores da web podem adicionar mais propriedades ao error
objeto. Por exemplo, o Firefox adiciona propriedades filename
, lineNumber
e stack
ao error
objeto.
É uma boa prática colocar apenas o código que pode causar uma exceção no try
bloco.
O fluxograma a seguir ilustra como a try...catch
instrução funciona:
Exemplos de instruções try…catch de JavaScript
O exemplo a seguir usa a try...catch
instruçã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'}
Bye
Linguagem de código: CSS ( css )
Neste exemplo, chamamos a add()
função e atribuímos o valor de retorno à result
variá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 catch
bloco 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 catch
bloco.
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 true
se essa string for um JSON válido ou false
não.
Para validar JSON, a isValidJSON()
função usa o JSON.parse()
método e try...catch
a 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 true
no try
bloco. Caso contrário, ele retorna false
no catch
bloco.
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 result
para o console:
console.log(valid);
Linguagem de código: JavaScript ( javascript )
Resumo
- Use a
try...catch
instrução para lidar com exceções em JavaScript. - Coloque apenas o código que pode causar uma exceção no
try
bloco.