Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

[Projeto] 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.
Essa foi minha resolução:


public class ErroConsultaGitHubException extends RuntimeException {    
    public ErroConsultaGitHubException(String message) {
        super(message);
    }
}

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 Principal {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Digite o username do usuario: ");
        String username = input.nextLine();

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

        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("Usuario " + username + " não foi encontrado!");
            }

            System.out.println(response.body());


        }catch (IOException | InterruptedException e){
            System.out.println("Houve um problema de conexão com a API: \n" + e.getMessage());

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