1
resposta

DESAFIO - HORA DA PRÁTICA 3

  • Crie um programa simples que solicita dois números ao usuário e realiza a divisão do primeiro pelo segundo. Utilize o bloco try/catch para tratar a exceção que pode ocorrer caso o usuário informe 0 como divisor.
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1,num2;
        System.out.println("Informe o numerador");
        num1 = sc.nextInt();
        System.out.println("Informe o denominador");
        num2 = sc.nextInt();
        try {
            int resultado = num1/num2;
            System.out.println("O resultado deste divisão é: "+resultado);
        }catch (ArithmeticException e ){
            System.out.println("Erro: Divisão por zero não é permitido!!!");
        }
        }
        }
  • Crie um programa que lê uma senha do usuário. Utilize o bloco try/catch para capturar a exceção SenhaInvalidaException, uma classe de exceção personalizada que deve ser lançada caso a senha não atenda a critérios específicos (por exemplo, ter pelo menos 8 caracteres).
package excessoes;

public class senhaInvalida extends RuntimeException {
    public senhaInvalida(String mensagem) {
        super(mensagem);
    }
}
public class Main {
    public static void main(String[] args) {
    
String senha;
        System.out.println("Digite sua senha: ");
        senha = sc.next();
        try {
            SenhaValidar(senha);
        }catch (senhaInvalida e){
            System.out.println(e.getMessage());
        }

    }
    public  static void SenhaValidar(String senha){
        if (senha.length()<8){
            throw new senhaInvalida("A senha deve contar no minimo 8 caracteres");
        }
    }
    }
    }
  • Desenvolva um programa em Java que permite aos usuários consultar informações sobre um usuário do GitHub (utilize a API pública do GitHub para obter os dados). Crie uma classe de exceção personalizada, ErroConsultaGitHubException, que estende RuntimeException. Lance essa exceção quando o nome de usuário não for encontrado. No bloco catch, trate de forma específica essa exceção, exibindo uma mensagem amigável.
public class ErroConsulta extends Throwable {
    public ErroConsulta(String mensagem) {
        super(mensagem);
    }
}

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;

public class main2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("Digite o usuario de Pesquisa: ");
        String username = sc.next();
        String enderecoApi = "https://api.github.com/users/" + username;

        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create(enderecoApi))
                    .header("Accept", "application/vnd.github.v3+json")
                    .build();

            HttpResponse<String> response = client
                    .send(request, HttpResponse.BodyHandlers.ofString());

            if (response.statusCode() == 404){
                throw new ErroConsulta("Usuário não encontrado");
            }
            String json = response.body();
            System.out.println(json);


        }catch (ErroConsulta e ){
            System.out.println(e.getMessage());

        }catch (IOException | InterruptedException e){
            System.out.println("Erro durante a consulta !!!");
        }
    }
}
1 resposta

Oi, Paulo! Tudo bom?

Excelente! Siga praticando com os desafios e sempre compartilhe conosco.

Você soube aplicar tratamento de exceções personalizado de forma eficiente, aproveitou o throw para lançar erros específicos e entendeu como o HttpClient é essencial para realizar consultas HTTP modernas em Java.

Como sugestão para as próximas vezes, você pode postar um código por tópico! Assim podemos te dar um feedback específico para cada um deles.

E uma dica adicional, experimente utilizar o bloco finally quando precisar garantir a execução de um código independentemente de erros, como fechar recursos ou liberar conexões. Assim:

try {
    // lógica principal
} catch (Exception e) {
    System.out.println("Erro: " + e.getMessage());
} finally {
    System.out.println("Programa encerrado.");
}

Resultado:

Erro: <mensagem do erro>
Programa encerrado.

Isso faz com que uma mensagem final seja sempre exibida, ou um trecho de código seja executado, mesmo que ocorra um erro no processo.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!