Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio 3: Bloco try/catch para o tratamento adequado de exceptions

// 1. Programa de divisão

import java.util.Scanner;

public class Divisao {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        try {
            System.out.print("Informe o primeiro número: ");
            double num1 = scanner.nextDouble();

            System.out.print("Informe o segundo número: ");
            double num2 = scanner.nextDouble();

            double resultado = num1 / num2;
            System.out.println("O resultado da divisão é: " + resultado);
        } catch (ArithmeticException e) {
            System.out.println("Erro: Divisão por zero não é permitida.");
        } catch (Exception e) {
            System.out.println("Erro: Entrada inválida.");
        } finally {
            scanner.close();
        }
    }
}

// 2. Programa de verificação de senha

public class SenhaInvalidaException extends Exception {
    public SenhaInvalidaException(String mensagem) {
        super(mensagem);
    }
}
public class VerificaSenha {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Informe a senha: ");
        String senha = scanner.nextLine();

        try {
            validarSenha(senha);
            System.out.println("Senha válida.");
        } catch (SenhaInvalidaException e) {
            System.out.println("Erro: " + e.getMessage());
        } finally {
            scanner.close();
        }
    }

    public static void validarSenha(String senha) throws SenhaInvalidaException {
        if (senha.length() < 8) {
            throw new SenhaInvalidaException("A senha deve ter pelo menos 8 caracteres.");
        }
        // Adicione outros critérios de validação, se necessário
    }
}

// 3. Programa de consulta ao GitHub

public class ErroConsultaGitHubException extends RuntimeException {
    public ErroConsultaGitHubException(String mensagem) {
        super(mensagem);
    }
}
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class ConsultaGitHub {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Informe o nome de usuário do GitHub: ");
        String usuario = scanner.nextLine().trim();

        if (!isValidGitHubUsername(usuario)) {
            System.out.println("Erro: Nome de usuário inválido. Certifique-se de que não contém espaços ou caracteres especiais.");
            return;
        }

        try {
            consultarUsuarioGitHub(usuario);
        } catch (ErroConsultaGitHubException e) {
            System.out.println("Erro: " + e.getMessage());
        } finally {
            scanner.close();
        }
    }

    public static boolean isValidGitHubUsername(String username) {
        return username.matches("^[a-zA-Z0-9-]+$");
    }

    public static void consultarUsuarioGitHub(String usuario) throws ErroConsultaGitHubException {
        String urlString = "https://api.github.com/users/" + usuario;

        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");

            int responseCode = conn.getResponseCode();
            if (responseCode == 404) {
                throw new ErroConsultaGitHubException("Usuário não encontrado.");
            } else if (responseCode != 200) {
                throw new ErroConsultaGitHubException("Erro ao consultar o GitHub. Código de resposta: " + responseCode);
            }

            Scanner scanner = new Scanner(url.openStream());
            StringBuilder response = new StringBuilder();
            while (scanner.hasNext()) {
                response.append(scanner.nextLine());
            }
            scanner.close();

            JsonObject jsonObject = JsonParser.parseString(response.toString()).getAsJsonObject();

            String nome = getJsonElementAsString(jsonObject.get("name"));
            String bio = getJsonElementAsString(jsonObject.get("bio"));
            int publicRepos = jsonObject.get("public_repos").getAsInt();

            System.out.println("Nome: " + nome);
            System.out.println("Bio: " + bio);
            System.out.println("Repositórios públicos: " + publicRepos);

        } catch (IOException e) {
            throw new ErroConsultaGitHubException("Erro ao conectar com o GitHub.");
        }
    }

    private static String getJsonElementAsString(JsonElement element) {
        return element != null && !element.isJsonNull() ? element.getAsString() : "Informação não disponível";
    }
}
1 resposta
solução!

Olá Samil, tudo bem com você?

Meus parabéns pela resolução da atividade você está no caminho certo, continue com essa dedicação e empenho, colocando em prática o que está aprendendo. Você demonstrou uma boa compreensão de como utilizar try/catch e exceções personalizadas para gerenciar diferentes tipos de erros em seu código.

Caso queira aprofundar ainda mais no aprendizado sobre try/catch, recomendo a leitura do artigo Try Catch em Java. Este artigo está em inglês, caso tenha dificuldade com o idioma, basta utilizar o tradutor do navegador.

Fico à disposição.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!