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 mensagem){
super (mensagem);
}
}
public record Usuario(String login, String name, String bio) {
}
import com.google.gson.Gson;
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) {
var scanner = new Scanner(System.in);
System.out.println("Digite o nome do usuario: ");
String usuario = scanner.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());
validarUsuario(response);
String json = response.body();
Gson gson = new Gson();
Usuario usuarioGitHub = gson.fromJson(json, Usuario.class);
System.out.println(usuarioGitHub.login());
System.out.println(usuarioGitHub.name());
System.out.println(usuarioGitHub.bio());
} catch (ErroConsultaGitHubException e){
System.out.println(e.getMessage());
} catch (IOException | InterruptedException e) {
System.out.println("Erro ao consultar o GitHub");
}
}
private static void validarUsuario (HttpResponse<String>response){
if (response.statusCode() == 404){
throw new ErroConsultaGitHubException("Esse usuario não foi encontrado");
}
}
}