0
respostas

[Projeto] Lidando com Exceptions

PRINCIPAL

package br.com.screenmatch.principal;

import br.com.screenmatch.exception.ErroDeConversaoDeAnoException;
import br.com.screenmatch.modelos.Titulo;
import br.com.screenmatch.modelos.TituloOmdb;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

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 PrincipalComBusca {
public static void main(String[] args) throws IOException, InterruptedException {
    Scanner leitura = new Scanner(System.in);
    System.out.println("Digite o nome de um filme para busca: ");
    String nomeFilme = leitura.nextLine();

    String endereco = "https://www.omdbapi.com/?t="
            + nomeFilme.replace(" ", "+")
            + "&apikey=..."; 
            //Tirei a minha chave para poder postar!!

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create(endereco))
            .build();
    HttpResponse<String> response = client
            .send(request, HttpResponse.BodyHandlers.ofString());

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

    Gson gson = new GsonBuilder()
            .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
            .create();

    TituloOmdb meuTituloOmdb = gson.fromJson(json, TituloOmdb.class);
    System.out.println(meuTituloOmdb);

    try {
        Titulo meuTitulo = new Titulo(meuTituloOmdb);
        System.out.println("Titulo já convertido");
        System.out.println(meuTitulo);

    } catch (NumberFormatException e) {
        System.out.println("Aconteceu um erro:");
        System.out.println(e.getMessage());

    } catch (IllegalArgumentException e) {
        System.out.println("Algum erro de argumento na busca, verifique o endereço");

    } catch (ErroDeConversaoDeAnoException e) {
        System.out.println(e.getMessage());
    }
}
}

EXCEPITION

package br.com.screenmatch.exception;

public class ErroDeConversaoDeAnoException extends RuntimeException {

private String mensagem;

public ErroDeConversaoDeAnoException(String mensagem) {
    this.mensagem = mensagem;
}

@Override
public String getMessage() {
    return this.mensagem;
}
}

TÍTULO

package br.com.screenmatch.modelos;

public class Serie extends Titulo {
private int temporadas;
private boolean ativa;
private int episodiosPorTemporada;
private int minutosPorEpisodio;

public Serie(String nome, int anoDeLancamento) {
    super(nome, anoDeLancamento);
}

public int getTemporadas() {
    return temporadas;
}

public void setTemporadas(int temporadas) {
    this.temporadas = temporadas;
}

public boolean isAtiva() {
    return ativa;
}

public void setAtiva(boolean ativa) {
    this.ativa = ativa;
}

public int getEpisodiosPorTemporada() {
    return episodiosPorTemporada;
}

public void setEpisodiosPorTemporada(int episodiosPorTemporada) {
    this.episodiosPorTemporada = episodiosPorTemporada;
}

public int getMinutosPorEpisodio() {
    return minutosPorEpisodio;
}

public void setMinutosPorEpisodio(int minutosPorEpisodio) {
    this.minutosPorEpisodio = minutosPorEpisodio;
}

@Override
public int getDuracaoEmMinutos() {
    return temporadas * episodiosPorTemporada * minutosPorEpisodio;
}
}