Compartilhar via


JavaScript: Tratamento de erros

Nesse artigo serão abordadas as boas práticas para tratar erros quando programamos em JavaScript.

Existem três tipos de erros na programação:

  • Erros de sintaxe;
  • Erros de tempo de execução;
  • Erros lógicos.

Erros de sintaxe

Os erros de sintaxe, também chamados de erros de análise, ocorrem em tempo de compilação em linguagens de programação tradicionais e no tempo de interpretação no JavaScript. Acontecem porque pode ocorrer de digitarmos errado algo, esquecermos parênteses ou chaves, etc.

Por exemplo, a seguinte linha causa um erro de sintaxe porque está faltando um parêntese de fechamento.

Quando um erro de sintaxe ocorre em JavaScript, somente o código contido dentro do mesmo segmento como o erro de sintaxe é afetado e o resto do código em outros segmentos é executado não assumindo nada que dependa do código que contém o erro.

Erros de tempo de execução

Erros de execução, também chamados de exceções, ocorrem durante a execução (após a compilação/interpretação).

Por exemplo, a seguinte linha ocasiona um erro de execução, porque aqui a sintaxe está correta, mas em tempo de execução, ele está tentando chamar um método que não existe.

Erros lógicos

Os erros lógicos podem ser o tipo de erros mais difícil de rastrear. Esses erros não são o resultado de um erro de sintaxe ou de tempo de execução. Eles ocorrem quando você comete um erro na lógica fazendo com que seu script não obtenham o resultado esperado.

As funções try, catch e finally

As últimas versões do JavaScript trouxeram capacidades de manipulação de exceção. O JavaScript implementa os construtores try, catch e finally, bem como o operador throw para lidar com exceções.

Você pode capturar exceções geradas e em tempo de execução, porém você não pode pegar erros de sintaxe de JavaScript.

Exemplo de um bloco try, catch, finally:

O bloco try deve ser seguido sempre por um bloco catch ou um bloco finally, ou ambos. Quando ocorre uma exceção no bloco try, a exceção é colocada na variável e e o bloco catch é executado. O bloco opcional finally é executado incondicionalmente após  os blocos try/catch.Aqui está um exemplo onde nós estamos tentando chamar uma função que não existe e  que por sua vez provoca uma exceção. Nesse exemplo não vamos utilizar o try e o catch:

Agora vamos tentar capturar essa exceção usando try/catch e exibir uma mensagem para o usuário. Você também pode suprimir esta mensagem, se você não quer que o usuário saiba que ocorreu um erro.

Você pode usar o bloco finally que sempre será executado incondicionalmente após o try/catch. Como nesse exemplo:

A instrução throw

Você pode usar a instrução throw para causar suas exceções  ou suas exceções personalizadas. Depois essas exceções podem ser capturadas e você pode tomar uma ação apropriada para elas.

O exemplo a seguir demonstra como usar uma instrução throw em um procedimento que checa se o email digitado é válido:

Você pode gerar uma exceção em uma função usando uma string, um inteiro, com booleano, ou um objeto e, em seguida, você pode capturar essa exceção seja na mesma função, como fizemos anteriormente, ou em outra função usando um bloco try/catch.

O método onerror

O manipulador de eventos onerror foi o primeiro recurso a facilitar a manipulação de erros no JavaScript. O evento de erro é acionado no objeto janela sempre que ocorre uma exceção na página.

O manipulador de eventos onerror oferece três trechos de informação para identificar a natureza exata do erro:

  • Mensagem de erro - A mesma mensagem que o navegador exibirá o erro ocorrido
  • URL - O arquivo no qual o erro ocorreu
  • Número da Linha -  O número da linha na URL informada que causou o erro

Exemplo de como extrair essas informações:

Você pode exibir as informações extraídas da maneira que você achar melhor.

O método onerror é muito interessante e útil, afinal pode auxiliar bastante a vida de quem está desenvolvendo, já que facilita a descoberta de algum erro que esteja acontecendo.

Você pode usar o onerror com muitas tags HTML para apresentar mensagens adequadas em caso de erros diversos. É um ótimo recurso realmente.

Tratar erros é de suma importância e deixam as aplicações bem mais robustas e profissionais.

Bom, espero que tenha sido útil, pessoal!

Um forte abraço e até a próxima!

Instrução try...catch...finally (JavaScript)
https://msdn.microsoft.com/pt-br/library/4yahc5d8(v=vs.94).aspx

Meus Perfis:
LinkedIn
Facebook

.NET Coders – Meetup
http://www.meetup.com/pt/NetCoders/

.NET Coders – Facebook
https://www.facebook.com/groups/netcoders/

.NET Coders – Blog
http://netcoders.com.br/blog/