Estrutura try..catch..finally - JavaScript
Durante a execução de um programa, podem ocorrer diversos tipos de erros que interrompem o fluxo normal do programa e podem até fazer com que ele pare de funcionar. O JavaScript possui ferramentas para lidar com essas situações.
Durante a execução de um programa, podem ocorrer diversos tipos de erros que interrompem o fluxo normal do programa e podem até fazer com que ele pare de funcionar. O JavaScript possui ferramentas para lidar com essas situações.
callSomeFunc();
console.log("Demais instruções");
Aqui, a função callSomeFunc()
Uncaught ReferenceError: callSomeFunc is not defined
Todas as instruções seguintes, que aparecem depois da linha que causou o erro, não são executadas. O programa termina sua execução.
Essa situação pode parecer forçada, pois sabemos que a função callSomeFunc()
Para lidar com tais situações, o JavaScript oferece a estrutura try
catch
finally
try {
// instruções do bloco try
}
catch (error) {
// instruções do bloco catch
}
finally {
// instruções do bloco finally
}
Após o operador try
Segue-se o operador catch
catch
try
Após o bloco catch
finally
try
catch
Vale ressaltar que apenas o bloco try
catch
finally
catch
finally
...try
catch
...try
finally
...try
...catch
finally
Por exemplo, vamos lidar com a situação anterior da função inexistente usando esta estrutura:
try {
callSomeFunc();
console.log("Fim do bloco try");
}
catch {
console.log("Ocorreu um erro!");
}
console.log("Demais instruções");
Primeiramente, o bloco try
callSomeFunc()
try
catch
catch
Ocorreu um erro! Demais instruções
Consideremos outro exemplo:
function callSomeFunc() {
console.log("Função callSomeFunc executada");
}
try {
callSomeFunc();
console.log("Fim do bloco try");
}
catch (error) {
console.log("Ocorreu um erro!");
}
console.log("Demais instruções");
Agora a função callSomeFunc()
try
catch
Função callSomeFunc executada Fim do bloco try Demais instruções
Captura de Erros no Bloco catch
Dentro do bloco catch
try {
callSomeFunc();
console.log("Fim do bloco try");
}
catch (error) {
console.log("Ocorreu um erro!");
console.log(error);
}
Neste caso, a saída no console seria:
Ocorreu um erro! ReferenceError: callSomeFunc is not defined at at index.html:35
Bloco Finally
A estrutura try
finally
catch
finally
try {
callSomeFunc();
console.log("Fim do bloco try");
}
catch {
console.log("Ocorreu um erro");
}
finally {
console.log("Bloco finally");
}
console.log("Demais instruções");
A saída no console da programa seria:
Ocorreu um erro Bloco finally Demais instruções
Se removermos o bloco catch
finally
finally
try {
callSomeFunc();
console.log("Fim do bloco try");
{
finally {
console.log("Bloco finally");
{
console.log("Demais instruções");
A saída no console seria:
Bloco finally ReferenceError: callSomeFunc is not defined