Resumo : neste tutorial, você aprenderá como usar a try...catch...finally
instrução JavaScript para capturar exceções e executar um bloco, independentemente de as exceções ocorrerem ou não
Introdução à instrução JavaScript try…catch…finally
A try...catch
instrução permite capturar exceções e tratá-las normalmente. Às vezes, você deseja executar um bloco, independentemente de ocorrerem exceções ou não. Nesse caso, você pode usar a try...catch...finally
instrução com a seguinte sintaxe:
try {
// code may cause exceptions
} catch (error) {
// code to handle exceptions
} finally {
// code to execute whether exceptions occur or not
}
Linguagem de código: JavaScript ( javascript )
Nesta sintaxe, o finally
bloco sempre é executado após a conclusão try
dos catch
blocos e e independentemente de ocorrerem exceções ou não.
O fluxograma a seguir ilustra como try...catch...finally
funciona:
Exemplo de instrução JavaScript try…catch…finally
O exemplo a seguir ilustra como usar a try...catch...finally
instrução:
let result = 0;
try {
result = add(10, 20);
} catch (e) {
console.log(e.message);
} finally {
console.log({ result });
}
Linguagem de código: JavaScript ( javascript )
Saída:
add is not defined
{ result: 0 }
Linguagem de código: CSS ( css )
Como funciona.
Primeiro, declare a result
variável e inicialize seu valor com 0
.
let result = 0;
Linguagem de código: JavaScript ( javascript )
Segundo, chame a add()
função e atribua o valor de retorno à result
variável no try
bloco. Como a add()
função não existe, o mecanismo JavaScript gera uma exceção.
Por causa da exceção, a instrução no catch
bloco é executada para mostrar a mensagem de erro.
Terceiro, envie result
para o console no try
bloco.
No exemplo a seguir, definimos a add()
função e a chamamos no try
bloco:
const add = (x, y) => x + y;
let result = 0;
try {
result = add(10, 20);
} catch (e) {
console.log(e.message);
} finally {
console.log({ result });
}
Linguagem de código: JavaScript ( javascript )
Saída:
{ result: 30 }
Linguagem de código: CSS ( css )
Como a add()
função existe, nenhuma exceção ocorre no try
bloco. Portanto, o finally
bloco gera o valor da result
variável, que é a soma de 10
e 20
.
Em ambos os exemplos, o finally
bloco sempre é executado.
tente…pegue…finalmente e retorne
O finally
bloco sempre é executado independentemente de ocorrerem exceções ou não. Além disso, você não pode fazer nada para impedir sua execução, incluindo o uso de uma return
instrução. Por exemplo:
function fn() {
try {
return 1;
} catch {
return 2;
} finally {
return 3;
}
}
console.log(fn());
Linguagem de código: JavaScript ( javascript )
Saída:
3
Neste exemplo, a return
instrução no try
bloco retorna 1
. Portanto, a fn()
função deveria ter retornado 1
. No entanto, não é o caso.
Como o finally
bloco sempre é executado, a return
instrução no finally
bloco retorna 3
. Portanto, a fn()
função retorna 3
.
Em outras palavras, as return
instruções nos blocos try
e catch
são ignoradas na try...catch...finally
instrução.
Resumo
- Use a
finally
cláusula natry...catch...finally
instrução para executar um bloco, independentemente de ocorrerem exceções ou não. - A
try...catch...finally
instrução ignora areturn
instrução nos blocostry
ecatch
porque ofinally
bloco sempre é executado.