Skip to content

Instantly share code, notes, and snippets.

@rafarocha
Last active November 25, 2023 16:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafarocha/350d617f357d4d321b0d7aac216dd2c1 to your computer and use it in GitHub Desktop.
Save rafarocha/350d617f357d4d321b0d7aac216dd2c1 to your computer and use it in GitHub Desktop.

Desafio 11 - Exception

Contexto

  • Exceções nos permitem atender a três pontos principais em projetos:
    • Tratamento de erros → Para lidar com situações inesperadas ou erros durante a execução do programa, oferecendo uma maneira estruturada de tratar esses problemas e manter a integridade do sistema.

    • Melhor Compreensão de Erros → Com informações detalhadas sobre o tipo e a origem de um erro, facilitando a identificação e resolução de problemas.

    • Manutenção e Robustez do Código → O código se torna mais robusto, pois mesmo que ocorram problemas, o programa não quebra abruptamente. E os erros podem ser gerenciados e corrigidos de forma mais controlada e preventiva.

Problema

Etapa 00

  • Quem vai pilotar? Decidiram? Ainda não?
  • Bom. Aqui vai uma sugestão https://wheelofnames.com/
    • Coloque o nome de cada membro da equipe e clique na bolinha branca para escolha aleatória
  • Incrível. Agora sabemos quem é o piloto e o restante serão os ajudantes nesta aventura. Let's go!

Etapa 01

  • Coloque o código indicado lá embaixo, em referências, em sua máquina local
  • Execute ele e avalie o resultado

Etapa 02

  • Você deve agora, com a ajuda dos seus colegas, implementar o tratamento de erro
  • A tratabilidade deve capturar o valor NaN e lançar um RuntimeException
  • Agora refatore o código para checar se o número é negativo. E se for lançar a exceção.
  • Nela você deve incluir a mensagem: Raiz Negativa. Valor <valor>!
  • Execute o código novamente e confirme que a exceção foi lançada com a mensagem desejada

Etapa 03

  • Muito bem. Vamos ajustar isso para enviar uma mensagem amigável ao usuário
  • Crie uma classe, que estende da classe RuntimeException com o nome NumeroNegativoException
  • class NumeroNegativoException extends RuntimeException
  • Você pode criar esta exceção na mesma classe logo após o método main
  • Substitua agora a linha que lança o RuntimeException pela exceção criada NumeroNegativoException
  • Execute o programa e veja o que mudou

Etapa 04

  • Pronto. Agora podemos capturar a NumeroNegativoException e enviar uma mensagem amigável ao usuário
  • Implemente o try/catch na chamada do método calcularRaizQuadrada
  • No catch devemos enviar uma mensagem amigável ao usuário e encerrando o programa imediatamente
  • Indique ao usuário os valores permitidos para melhorar a usabilidade do seu programa.

Etapa 05

  • Agora reflita e pense:
    • O que ganhamos com tudo isto?
    • O que perdemos e onde podemos melhorar ainda mais?

Etapa 06

  • Parabéns. Um brinde a nós!

Código

public class Teste {

    public static void main(String[] args) {
        double numero = -9;
        double resultado = calcularRaizQuadrada(numero);
        System.out.println("Raiz quadrada de " + numero + " é: " + resultado);
    }

    private static double calcularRaizQuadrada(double numero) {
        return Math.sqrt(numero);
    }

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment