1
resposta

Resposta exercício 3

Exercício 3: 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.

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 Pricipal {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner leitura = new Scanner(System.in);
        System.out.println("Digite um usuário para fazer a pesquisa no GitHub: ");
        String usuario = leitura.nextLine();

        String endereco = "https://api.github.com/users/" + usuario;

        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder().uri(URI.create(endereco)).build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            if (response.statusCode() == 404) {
                throw new ErroConsultaGitHubException("Nome de usuário não encontrado!");
            }

            System.out.println(response.body());
        } catch (ErroConsultaGitHubException e) {
            System.out.println("Nome de usuário não encontrado!");
        }
    }
}


public class ErroConsultaGitHubException extends RuntimeException {
    private String mensagem;

    public ErroConsultaGitHubException(String mensagem) {
        this.mensagem = mensagem;
    }

    @Override
    public String getMessage() {
        return this.mensagem;
    }
}
1 resposta

Oi, Gustavo! Como vai?

Com base no que você explicou, chamou atenção como você utilizou o HttpClient e tratou o status 404 lançando uma exceção personalizada, o que mostra um bom entendimento de exceções e deixa o código mais organizado e legível. Uma dica interessante para o futuro e validar outros códigos de resposta da API para deixar o tratamento ainda mais robusto, por exemplo:


int status = response.statusCode();
if (status != 200) {
    throw new RuntimeException("Erro na requisicao");
}

Esse código verifica o código de resposta HTTP e interrompe o fluxo caso a requisição não tenha sido bem sucedida, evitando processar dados inconsistentes.

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