Desafio 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.
package exceptions;
public class ErroConsultaGitHubException extends RuntimeException {
public ErroConsultaGitHubException(String msg) {
super(msg);
}
}
package entities;
import exceptions.ErroConsultaGitHubException;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class AccessGitHub {
public AccessGitHub(String user) throws IOException, InterruptedException {
String endereco = "https://api.github.com/users/" + user;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(endereco))
.header("Accept", "application/vnd.github.v3+json")
.build();
HttpResponse<String> response = client
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 404) {
throw new ErroConsultaGitHubException("Usuário não localizado no GitHub.");
}
String json = response.body();
System.out.println(json);
}
}
package entities;
public class UserGitHub {
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
package main;
import entities.AccessGitHub;
import entities.UserGitHub;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
UserGitHub user = new UserGitHub();
System.out.println("Digite o nome a ser buscado no GitHub: ");
user.setNome(sc.nextLine());
try {
AccessGitHub localizaGit = new AccessGitHub(user.getNome());
} catch (IOException e) {
System.out.println("Ocorreu erro na execução da consulta!");
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
}
sc.close();
}
}
Execução OK:
Execução retorna mensagem: