Buscar

Lista de exceções

Prévia do material em texto

LISTA DE ATIVIDADES
CLEYTON CAETANO DE SOUZA – PROGRAMAÇÃO II – JAVA
ATIVIDADE COMPLEMENTAR 7
O que é uma exceção? 
Como funciona o bloco finally do try catch.
Um bloco try e catch pode conter vários “catches”. Explique como e por que isso as vezes acontece. A ordem das capturas das exceções nos blocos catches podem ocorrer em qualquer ordem ou devem obedecer uma hierarquia? Explique.
Qual será a saída do seguinte programa:
class Main {
 public static void main(String[] args) {
 String[] a = {“ABC”, “123”, “0”, “”};
 for(int i=0; i<=4;i++) {
 try{
 String s = a[i];
 System.out.println(“s: “+s);
 int n = Integer.parseInt(s);
 System.out.println(“n: “+n);
 int m = 1234/n;
 System.out.println(“m: “+m);
 }catch(NumberFormatException e) {
 System.out.println(“Erro na formatação do número”);
 }catch(ArrayIndexOutOfBoundsException e) {
 System.out.println(“Acesso fora do array”);
 }catch(ArithmeticException e) {
 System.out.println(“Erro matemática”);
 }
 }
 System.out.println(“fim”);
 }
}
Se nenhuma exceção é lançada em um bloco try, onde o controle de execução prossegue quando o bloco try termina a execução?
Escreva um programa para preencher valores de um vetor de inteiros com 10 posições. O usuário irá informar os valores a serem inseridos e suas respectivas posições no array. O programa deve tratar as exceções ArrayIndexOutOfBoundsException quando for informada uma posição inexistente do vetor e NumberFormatException quando o valor informado não for número. Utilize JOptionPane para Entrada e Saída de dados. 
Faça um programa para, utilizando JOptionPane ler um valor numérico do usuário. Converta a entrada para um Integer. Caso a conversão não seja possível, trate a exceção para que o programa avise ao usuário que ele não digitou um número. Caso a conversão seja possível, use um JOptionPane para mostrar a raiz quadrada desse número.
Qual a saída do código abaixo?
Qual o resultado do método abaixo passando como entrada os valores 0 e 3?
Imprime Exception Finally
Imprime Finally
Imprime Exception
Erro de compilação
Qual saída do programa abaixo?
Qual a diferença entre um Error e uma RunTimeException? O que eles tem em comum?
Qual o resultado obtido se ocorrer a exceção NullPointerException na linha 2?
c
a
ab
ac
bc
abc
Considere o código a seguir:
public class TestException extends Exception {}
public class A {
 public String sayHello(String name) throws TestException {
 if(name == null) {
 throw new TestException();
 }
 return “Hello ”+ name;
 }
}
Um programador quer usar este código em uma aplicação:
Linha1: A a = new A();
Linha2: System.out.println(a.sayHello(“John”));
Quais as alternativas corretas relacionadas a essa implementação?
A. Classe A não compilará.
B. Linha 2 pode disparar a exceção TestException que não foi checada.
C. Linha 1 pode disparar a exceção TestException que não foi checada.
D. Linha 2 compila se adicionar TestException na declaração do método que apresenta esse código.
E. Linha 2 compila se estiver dentro de um bloco try-catch, em que a exceção TestException é tratada.
Liste quatro exceções que você já teve que lidar ao programar e quando cada uma delas acontece.
Qual será a saída do programa abaixo?
Utilize herança para criar uma superclasse de exceção chamada ExceptionA e subclasses de exceção ExceptionB e ExceptionC, em que ExceptionB herda de Exception A e ExceptionC herda de ExceptionB. Escreva um programa para demonstrar que o bloco catch para o tipo ExceptionA captura exceções de tipos ExceptionB e ExceptionC. Explique por que isso acontece?
Dado o trecho de código abaixo:
	int[] vetor = new int[] { 2, 4, 6, 8, 10, 12 };
	for (int i = 0; i <= 12; i++) {
		System.out.println(vetor[i]);
	}
Implemente um programa em Java que execute este trecho. Execute o programa e veja a exceção produzida por acesso a posição fora dos limites do vetor. Trate esta exceção, imprimindo na tela uma mensagem dizendo que o vetor acabou.
Crie uma classe chamada Biblioteca. Biblioteca possui uma lista de livros e um método adicionar Livro. Um Livro consiste apenas em um título e o ano de publicação. O método adicionar livro deve lançar uma exceção LivroExistenteException caso o livro que se esteja tentando adicionar já exista na lista (teste se dois livros são iguais utilizado o método equals sobrescrito por você).
Crie um main para o projeto anterior. O main deve fornecer a possibilidade de cadastrar um novo livro ou buscar o ano de um livro cadastrado. A entrada e saída de dados deve ser feita utilizando JOptionPane.
Crie uma classe com métodos que podem lançar as seguintes exceções ArithmeticException, ArrayIndexOutOfBoundsException e NullPointerException (um método por exceção). Crie um main, invoque esses métodos e trate essas exceções exibindo a mensagem da exceção capturada no console (i.e., invocando o método getMessage).
Qual será a saída no console, quando o main for executado.
public class ExceptionA extends Exception {Console
 public void fazerAlgo(int i) throws ExceptionA {
 if (i%2 == 0)
 System.out.println(i*2);
 else
 throw new ExceptionA();
 }//end do método
}//end da classe
public class ExceptionB extends ExceptionA {
 public void fazerAlgo(int i) throws ExceptionB {
 if (i%2!=0)
 System.out.println(i*2);
 else 
 throw new ExceptionB();
 }//end do método
 public static void main(String[] args) {
 ExceptionA[] es = {new ExceptionA(), new ExceptionB(),
 new ExceptionB(), new ExceptionA()};
 int[] is = {1,2,3,4,5};
 int i=0;
 for(ExceptionA e: es) {
 try {
 e.fazerAlgo(is[++i]);
 }catch(ExceptionB e1) {
 System.out.println("a");
 }catch(ExceptionA e1) {
 System.out.println("b");
 } //end do catch
 }//end do for
 }//end do main
}//end da classe 
Crie uma classe para representar um Terminal de um caixa. Essa classe deve possuir uma lista de vendas. Uma venda possui como atributos: um código, valor da venda, quantidade de itens e forma de pagamento (a vista ou a prazo). A classe Terminal deve possuir um método receber venda, o qual receberá como parâmetros de entrada os atributos correspondentes a uma venda, “cria” uma venda e adicione na lista de vendas. Devem ser validadas as entradas do método “receber venda”, respeitando as seguintes regras: (1) nem o valor nem a quantidades de itens deve ser inferiores a um, (2) se a forma de pagamento for a prazo o valor máximo da venda deve ser 1.000 reais, (3) não pode haver uma venda com uma quantidade de itens maior que 200, e (4) não pode haver uma venda com o mesmo código já na lista. Crie exceções diferentes para cada um desses erros. A classe também deve possuir uma método remover venda pelo código, que deve lançar RemocaoInvalidaException caso a venda seja a prazo. 
Crie um main que ofereça as seguintes possibilidades: (1) Cadastrar Venda, (2) Remover venda, (3) Listas vendas e (S) Sair.
Crie uma classe para representar um Evento, um evento possui nome, data de inicio, data de fim. Esses parâmetros devem ser passados via construtor. O Construtor do evento deve lançar uma exceção DataInvalidaException, caso a data de inicio seja posterior a de fim. Use o método compareTo das datas para comparar as datas de inicio e fim. 
O que são exceções verificadas e não verificadas? Quais os tipos de exceções não verificadas e qual a diferença entre elas? Dê exemplos de comandos em Java que podem lanças exceções destes dois tipos.
Crie um programa que simule um equipamento eletrônico de monitoramento de velocidade de veículos. Inicialmente, teremos uma classe Veiculo, ela possuirá os seguinte atributos placa (String), velocidadeAtual (float) , nomeDoProprietario (String). O programa terá uma classe chamada Radar que possuírao seguinte método verificarVelocidade. A classe Radar possui um atributo, inicializado via construtor, que corresponde a velocidade máxima permitida. O método verificarVelocidade recebe um veículo como entrada e verifica se sua velocidade está acima do limite máximo permitido pelo radar. Se estiver, o método deve informar que está acima da velocidade permitida lançando uma VelocidadeMaximaNaoRespeitadaException. Se a velocidade do veículo for menor que 50% da velocidade máxima, deve ser lançada uma VelocidadeMinimaNaoRespeitadaException. Essas exceções devem ser subclasses de Exception e possuir mensagens personalizadas explicando o erro. 
Crie uma entidade chamada Multa que possui como atributos: um Veículo e float representando o valor da multa a ser paga. Adicione um construtor que recebe o veículo como entrada e o valor da multa a ser pago. Adicione as exceções da questão anterior um atributo do tipo Multa e no método verificar velocidade adicione a Multa à exceção antes dela ser lançada. O valor da multa respeita as seguintes regras:
Se o excesso de velocidade é até 20% do limite permitido a multa deve ser de R$ 85,13
Se o excesso de velocidade é entre 20% até 50% do limite permitido a multa deve ser de R$ 127,53
Se o excesso de velocidade é acima de 50% do limite permitido a multa deve ser de R$ 574,62.
A multa por dirigir abaixo do limite mínimo tem valor fixo e é de R$ 87,33
Por meio da questão anterior crie um main que simule o uso de um Radar na rodovia. Para isso, crie uma lista com 100 carros com velocidades aleatórias entre 40 km/h e 150 km/h. Crie um radar cuja velocidade máxima deve ser 90 km/h. O Radar deve receber todos os carros e informar se ele foi multado ou não e o valor da multa, quando for o caso. Ao fim, o programa deve informar quantas multas o radar “deu” e o valor total delas.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Perguntas Recentes