1 UFF – Universidade Federal Fluminense TIC – Instituto de Computação TCC – Departamento de Ciência da Computação TCC 00.309 | Programação de Computadores II | Turma A-1 | 2015.1 Professor Leandro Augusto Frata Fernandes Lista de Exercícios Sobre Tratamento de Exceções Questão 1 Nesta questão você deve identificar as partes problemáticas do código e reescrevê-lo utilizando tratamento de exceções. Ou seja, devem ser identificadas todas as exceções que podem ser levantadas e, para cada uma, deve ser dado o tratamento adequado que, nesse exercício, significa alertar o usuário quanto ao problema. public class Questao1 { public static void main(String[] args) { int n = Integer.parseInt(args[0]); for (int i = 0; i < n; i++) { System.out.println(i); } } } Questão 2 Nesta questão você deve identificar as partes problemáticas do código e reescrevê-lo utilizando tratamento de exceções. Ou seja, devem ser identificadas todas as exceções que podem ser levantadas e, para cada uma, deve ser dado o tratamento adequado que, nesse exercício, significa alertar o usuário quanto ao problema. Entretanto, nesse programa a leitura dos valores deve ser feita, mesmo que para isso o usuário tenha que tentar informar várias vezes os valores na mesma execução do programa. public class Questao2 { public static void main(String[] args) { BufferedReader teclado = new BufferedReader( new InputStreamReader(System.in)); System.out.println(“Eu sei somar!”); System.out.print(“Informe o primeiro valor: ”); double x = Double.parseDbl(teclado.nextLine()); System.out.print(“Informe o segundo valor: ”); double y = Double.parseDbl(teclado.nextLine()); System.out.println(“O resultado da soma é ” + (x + y)); } } 2 Questão 3 Eis que Galvão Bueno interrompe a narração e pergunta: “Pode isso, Arnaldo?” try { ... algum código ... } finally { ... algum código ... } Seu trabalho aqui é responder se pode, se não pode e, caso possa, se faz sentido e, caso faça sentido, elaborar um exemplo. Questão 4 Galvão Bueno está impossível hoje: “Pode isso, Arnaldo?” try { ... } catch ... } catch ... } algum código ... (Exception e) { algum código ... (ArithmeticException a) { algum código ... Seu trabalho aqui é responder se pode, se não pode e, caso possa, se faz sentido e, caso faça sentido, elaborar um exemplo. Questão 5 Considerando as classes de exceção contidas nos pacotes java.io, java.lang e java.util em sua opinião, qual é a mais adequada para expressar os seguintes problemas? Problema 1) Sua estrutura de dados é uma coleção indexada, de modo que os elementos são identificados por um valor inteiro, o índice. Porém, um método recebeu um índice fora da capacidade de indexação de sua coleção. Problema 2) O valor informado como argumento de um método não atende à sua especificação. Problema 3) O arquivo especificado pelo usuário não foi encontrado. Questão 6 De hoje até o fim do curso, sempre escreva código fonte pensando (i) que exceções você pode levantar por identificar uma situação adversa ou inconsistência nos dados, (ii) que exceções podem ser levantadas por métodos utilizados por você e (ii) das exceções que podem ser levantadas pelos métodos invocados, quais são as que podem ser tratadas de forma legítima. Depois de pensar, melhore o código colocando em prática o mecanismo de tratamento de exceções disponível na linguagem. Em tempo: não aceite todas as dicas dadas pela IDE (e.g., NetBeans). Ela não pode programar para você. Quem decide o que fazer com uma exceção é o programador.