Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio: hora da prática [APIs e Exceções]

Segue a resolução dos exercícios.

Classe Senha:

public class Senha {
    private String senha;

    public Senha(String senha) {
        if (senha.length() < 8){
            throw new TamanhoDeSenhaException("Senha deve ter no mínimo 8 caracteres");
        } else {
            this.senha = senha;
            System.out.println("Senha atualizado com sucesso!");
        }
    }
}

Classe TamanhoDeSenhaException:

public class TamanhoDeSenhaException extends RuntimeException {
    private String message;
    public TamanhoDeSenhaException(String message) {
        this.message = message;
    }
    @Override
    public String getMessage() {
        return message;
    }
}

Classe ErroConsultaGitHubException:

public class ErroConsultaGitHubException extends RuntimeException {
    private  String message;
    public ErroConsultaGitHubException(String message) {
        this.message = message;
    }
    @Override
    public String getMessage() {
        return message;
    }
}

Classe ConsultaAPIGitHub:

//imports

public class ConsultaAPIGitHub {
    public String consultaAPI(String url) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url)).build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        if (response.statusCode() == 404) {
            throw new ErroConsultaGitHubException("Exceção lançada -> Usuário não encontrado!");
        }
        return response.body();
    }
}

Classe DesafioHoraDaPraticaException:

import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

public class DesafioHoraDaPraticaException {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        
        System.out.println("\nExercício 1: ");
        int numero1;
        int numero2;
        System.out.println("Digite dois números inteiros:");
        System.out.println("Primeiro:");
        numero1 = input.nextInt();
        input.nextLine();
        System.out.println("Segundo:");
        numero2 = input.nextInt();
        input.nextLine();
        double divisao;
        try {
            divisao = numero1 / numero2;
        } catch (ArithmeticException e) {
            System.out.println("Ainda não conseguimos resolver " +
                    "matematicamente essa " + e.getMessage());
        }

        System.out.println("Exercício 2: ");
        System.out.println("Digite sua senha de 8 caracteres:");
        try {
            String psw = input.nextLine();
            Senha senha1 = new Senha(psw);
        } catch (TamanhoDeSenhaException e){
            System.out.println(e.getMessage());
        }

        System.out.println("Exercício 3: ");
        System.out.println("Digite o nome de um usuário do GitHub para stalkear: ");
        String nome = input.nextLine();
        try {
            String nomeCodificado = URLEncoder.encode(nome, StandardCharsets.UTF_8);
            String url = "https://api.github.com/users/" + nomeCodificado;
            ConsultaAPIGitHub consulta = new ConsultaAPIGitHub();
            System.out.println(consulta.consultaAPI(url));

        } catch (ErroConsultaGitHubException | IOException | InterruptedException e) {
            System.out.println(e.getMessage());
        }
        input.close();
    }
}

Output:

Exercício 1: 
Digite dois números inteiros:
Primeiro:
1
Segundo:
0
Ainda não conseguimos resolver matematicamente essa / by zero

Exercício 2: 
Digite sua senha de 8 caracteres:
1234567
Exceção lançada -> Senha deve ter no mínimo 8 caracteres

Exercício 3: 
Digite o nome de um usuário do GitHub para stalkear: 
RaoniDosReis
{"login":"RaoniDosReis","id":54869712,...}
Digite o nome de um usuário do GitHub para stalkear: 
villeladev
{"login":"villeladev","id":239257694,...}
Digite o nome de um usuário do GitHub para stalkear: 
fiedlerraf
Exceção lançada -> Usuário não encontrado!

Process finished with exit code 0
2 respostas
solução!

Oi, Raoni! Tudo bem?

Mandou muito bem na resolução dos desafios!

Seu código está muito organizado e você aplicou corretamente os conceitos de tratamento de exceções.

Continue com esse nível de detalhe!

Bons estudos!

Sucesso

Imagem da comunidade

Obrigado pelo feedback! Manterei o nível de detalhamento.