Cursos / Automação Industrial / Programação Orientada a Objetos / Aula
Quais estratégias devemos utilizar quando um código não se comporta da maneira como deveria? Vejamos abaixo duas estratégias que são comumente utilizadas:
Mas ao utilizar essas estratégias podemos ter alguns problemas, vamos ver abaixo quais são esses possíveis problemas.
Na figura 2, podemos observar a estratégia de usar booleanos para controlar comportamentos inesperados. Porém, como a figura abaixo destaca, podemos ter dois problemas, o primeiro é que o programador é obrigado a tratar (recuperar) o valor retornado pelo método e o segundo é que, de acordo com o retorno, é possível saber se algo deu certo ou errado, mas se foi errado, não saberá a causa do problema.
Na figura 3, temos o exemplo da segunda estratégia, que é a utilização de valores, onde o comportamento do código dependerá do valor retornado. Vejamos:
Nesse caso, além da mesma preocupação que tínhamos com o uso de booleanos, onde o programador é obrigado a tratar (recuperar) o valor retornado pelo método, ainda precisaremos de uma lista ou tabela para entender todos os códigos retornados, dependendo do cenário isso pode tornar-se inviável.
Até esse momento, vimos exemplos em que o programador tem controle total sobre o comportamento do seu código, porém existem situações onde isso não é possível, como, por exemplo, tentar acessar um arquivo que foi excluído ou até mesmo problemas de acesso a um servidor, que pode ter diversos motivos. Outros erros também podem ocorrer durante o desenvolvimento, como por exemplo: acesso à variável que não foi declarada ou erro de tipo. Para ter melhor controle e tratamento de situações como essas, vamos utilizar o tratamento de exceções.
É necessário o tratamento de exceções em situações que podem gerar comportamentos inesperados. O tratamento deve ser feito por um código diferente do código executado quando não ocorre a exceção.
Veja na figura 4 um código que irá gerar um erro (exceção):
Na linha 133 a IDE já avisa que um erro poderá ocorrer na variável y
, mas, para finalidade didática, vamos executar esse código e verificar o que ocorrerá. A figura 5 apresenta a saída do console após executar o código da figura 4.
Podemos observar na figura acima que um erro é gerado e uma exceção é lançada no console, parando a execução do código. Percebemos isso pois a mensagem continuando nosso código
da linha 35 não é exibida no console. É possível também verificar na mensagem do console o tipo de erro: ReferenceError: y is not defined
, informando que a variável y
não foi definida.
Esse comportamento não pode ser permitido, a aplicação não pode parar e o erro não pode ser lançado para o usuário. Veremos abaixo a forma de tratar esse problema com o uso do bloco try-catch.
Na figura 6, podemos observar que, na linha 126 a IDE avisa que um erro pode ocorrer na variável y
, porém colocamos essa parte do código dentro do try
, onde ele tentará executar e, caso ocorra um erro, o bloco catch
pegará esse erro. Em nosso exemplo para fins didáticos, o tipo do erro é apresentado no console, mas dentro do bloco catch
poderia ocorrer qualquer tipo de tratamento para o erro lançado.
Vejamos na figura 7 a saída desse código no console:
O mais importante é, mesmo com o erro, o bloco catch
tratou apresentando a mensagem: Tratamento de erro: y is not defined
e a execução do código não parou, nota-se isso pois a mensagem Continuando nosso código
foi apresentada no console.
Chegamos ao momento especial em relação ao tratamento de exceções. Até agora estávamos preocupados em tratar as exceções que poderiam acontecer, tentando contornar a situação utilizando o bloco try/catch. Mas, agora é a nossa vez de lançarmos as exceções, vamos ver como lançá-las!
Vejamos a figura 8:
Nessa caso, lançamos uma exceção quando o ano de nascimento é menor que 1900, para isso utilizamos a palavra reservada throw para lançar a exceção e a classe Error, que é disponibilizada pelo TypeScript, para customizar a mensagem. O uso da classe Error possibilita customizar as mensagens para diferentes situações em nosso programa.
Na aula prática sobre exceções, você vai aprender como criar exceções customizadas.
Versão 5.3 - Todos os Direitos reservados