1
resposta

[Prática] Desafio: hora da prática

Buena tarde,

Comparto código de los ejercicios, espero pueda ayudar un poco.

  1. Crie um programa simples que solicita dois números ao usuário e realiza a divisão do primeiro pelo segundo. Utilize o bloco try/catch para tratar a exceção que pode ocorrer caso o usuário informe 0 como divisor.
  2. Crie um programa que lê uma senha do usuário. Utilize o bloco try/catch para capturar a exceção SenhaInvalidaException, uma classe de exceção personalizada que deve ser lançada caso a senha não atenda a critérios específicos (por exemplo, ter pelo menos 8 caracteres).
  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.

MAIN

import br.com.ejerciciosjava.excepciones.ErroConsultaGitHubException;
import br.com.ejerciciosjava.excepciones.SenhaInvalidaException;

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.InputMismatchException;
import java.util.Scanner;

import static br.com.ejerciciosjava.ContrasenaUsuario.validarContrasena;


public class Main {
    public static void main(String[] args) throws SenhaInvalidaException, IOException, InterruptedException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("***************************************** \nEjercicio 1 \n*****************************************");
        System.out.println("División de dos números");
        try {

            System.out.println("Ingresa el primer dato: ");
            int dato1 = scanner.nextInt();
            System.out.println("Ingresa el segundo dato: ");
            int dato2 = scanner.nextInt();

            int opDiv = dato1 / dato2;
            System.out.println("***************************************** \nEl resultado de la división es: \n" + opDiv + "\n*****************************************");
        } catch (ArithmeticException e) {
            System.out.println("Hubo un error, la división de 0 no está permitida");
        } catch (InputMismatchException e) {
            System.out.println("Hubo un error, La división no considera los decimales");
        } catch (Exception e) {
            System.out.println("Hubo un error: " + e);
        }


        System.out.println("***************************************** \nEjercicio 2 \n*****************************************");
        System.out.println("Verificación de contraseña");
        System.out.println("Ingrese nombre de usuario: ");
        String usuario = scanner.next();
        System.out.println("Ingrese contraseña " + usuario);
        String contrasena = scanner.next();

        try {
            validarContrasena(contrasena);
            System.out.println("Contraseña válida");
        } catch (SenhaInvalidaException e) {
            System.out.println("Error: " + e.getMessage());
        }


        System.out.println("***************************************** \nEjercicio 3 \n*****************************************");
        System.out.println("Ingresa el usuario que buscas: ");
        String buscaUsuario = scanner.next();
        String direccion = "https://api.github.com/users/" + buscaUsuario;
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder().uri(URI.create(direccion)).build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

            if (response.statusCode() == 404) {
                throw new ErroConsultaGitHubException("Usuario no encontrado");
            }

            String json = response.body();
            System.out.println(json);

        } catch (ErroConsultaGitHubException e) {
            System.out.println("Hubo un error al realizar la búsqueda");

        } catch (Exception e) {
            System.out.println("Hubo un error");
        }
    }

}
public class ErroConsultaGitHubException extends Throwable {
    public ErroConsultaGitHubException(String usuarioNoEncontrado) {
    }
}
public class SenhaInvalidaException extends Throwable {
    public SenhaInvalidaException(String s) {
    }
}
1 resposta

Oi, Ana! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Você criou uma ótima estrutura de testes com tratamento de exceções em três contextos distintos. O uso de exceções personalizadas (SenhaInvalidaException e ErroConsultaGitHubException) mostra domínio da linguagem e boas práticas para deixar os erros mais claros.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!