Neste tutorial, você aprenderá sobre as instruções try… catch… finally para lidar com exceções em JavaScript com a ajuda de exemplos.
Os blocos try
, catch
e finally
são usados para tratar exceções (um tipo de erro). Antes de aprender sobre eles, você precisa saber sobre os tipos de erros de programação.
Tipos de Erros
Na programação, pode haver dois tipos de erros no código:
Erro de sintaxe : Erro na sintaxe. Por exemplo, se você escrever consol.log('your result');
, o programa acima gerará um erro de sintaxe. A grafia de console
é um erro no código acima.
Erro de tempo de execução : este tipo de erro ocorre durante a execução do programa. Por exemplo,
chamar uma função ou variável inválida.
Esses erros que ocorrem durante o tempo de execução são chamados de exceções . Agora, vamos ver como você pode lidar com essas exceções.
JavaScript try… catch Statement
A try… catch
instrução é usada para tratar as exceções. Sua sintaxe é:
try ( // body of try ) catch(error) ( // body of catch )
O código principal está dentro do try
bloco. Durante a execução do try
bloco, se ocorrer algum erro, ele vai para o catch
bloco. O catch
bloco trata os erros de acordo com as instruções catch.
Se nenhum erro ocorrer, o código dentro do try
bloco é executado e o catch
bloco é pulado.
Exemplo 1: Exibir Variável Não Declarada
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Resultado
NaN Um erro detectado Mensagem de erro: ReferenceError: a não está definido
No programa acima, uma variável não é definida. Quando você tenta imprimir a variável a, o programa gera um erro. Esse erro foi detectado no catch
bloco.
JavaScript try … catch … finally Declaração
Você também pode usar a try… catch… finally
instrução para lidar com exceções. O finally
bloco é executado quando o código é executado com sucesso ou se ocorre um erro.
A sintaxe do try… catch… finally
bloco é:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Exemplo 2: tente … pegar … finalmente Exemplo
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Resultado
NaN Um erro detectado Mensagem de erro: ReferenceError: a não está definido Finalmente será executado todas as vezes
No programa acima, ocorre um erro e esse erro é detectado pelo catch
bloco. O finally
bloco será executado em qualquer situação (se o programa for executado com sucesso ou se ocorrer um erro).
Nota : Você precisa usar catch
ou finally
declaração após try
declaração. Caso contrário, o programa gerará um erro Uncaught SyntaxError: Falta captura ou finalmente após tentativa.
JavaScript try… catch in setTimeout
O try… catch
não capturará a exceção se isso aconteceu em código " cronometrado ", como em setTimeout (). Por exemplo,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
O procedimento acima try… catch
não funcionará porque o mecanismo já saiu da try… catch
construção e a função é executada mais tarde.
O try… catch
bloco deve estar dentro dessa função para capturar uma exceção dentro de uma função cronometrada. Por exemplo,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Você também pode usar a throw
instrução com a try… catch
instrução para usar exceções definidas pelo usuário. Por exemplo, um certo número é dividido por 0 . Se você quiser considerar Infinity
um erro no programa, poderá lançar uma exceção definida pelo usuário usando a throw
instrução para tratar essa condição.
Você aprenderá sobre a instrução throw do JavaScript no próximo tutorial.