Buscar

turma_B_poos3_aula_5_excecoes_checadas_nao_checadas_exercicios

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 3 páginas

Prévia do material em texto

POOS3 – Programação Orientada a Objetos edilson.ifsp@gmail.com 
 
Aula 5 – Exceções checadas e não checadas 
1. Introdução 
As exceções podem ser classificadas em checadas (verificadas) ou não checadas (não verificadas). 
As exceções não checadas são exceções do tipo RuntimeException. Essas exceções ocorrem 
devido a deficiências do código escrito pelo programador, ou seja, são exceções que poderiam ser 
evitadas pelo código escrito pelo programador. Como exemplo, pode-se citar ArithmeticException, 
ArrayIndexOutOfBoundsException, NullPointerException, etc. 
Já as exceções checadas são do tipo Exception (mas não derivam de RuntimeException). Elas 
ocorrem por fatores que não estão sob o controle do programa (do código escrito pelo 
programador). Como exemplo, podemos citar exceções relacionadas com a leitura de arquivos, 
acesso a um banco de dados, etc. O detalhe é que o compilador é capaz de identificar se exceções 
checadas podem ser lançadas em um determinado trecho de código e exigirá que elas sejam tratadas 
ou declaradas, na assinatura do método, por meio da clausula throws. 
Para tratar as exceções checadas é preciso utilizar o bloco try/catch para manipular as exceções. 
Para declarar que o método em questão pode lançar uma determinada exceção, a palavra chave 
throws deve ser utilizada. Nesse ponto é importante destacar que qualquer outro método que 
precise utilizar esse método (cuja exceção foi declarada) deverá tratar essa exceção ou declará-la 
novamente. 
Veja o exemplo: 
 
public void gravar(ArrayList<Aluno> alunos) throws IOException{ 
 File arquivo = new File("dados_alunos.txt"); 
 PrintWriter pw = new PrintWriter(arquivo); 
… 
 
Observe que o método “gravar” utiliza a palavra chave throws para declarar que a exceção 
IOException pode ser lançada. Isso de deve ao fato de utilizarmos a linha de código 
“PrintWriter(arquivo)”. A não utilização da declaração throws implicaria na inclusão do bloco 
try/catch. 
Entretanto, observe que o método “gravarDadosArquivo()” precisa utilizar o bloco try/catch, 
pois faz uso do método “gravar(ArrayList<Aluno> alunos)”, que pode lançar exceções do 
tipo IOException. 
 
private void gravarDadosArquivo(){ 
 try{ 
 if (!alunos.isEmpty()){ 
 dao.gravar(alunos); 
 taAlunos.append("Dados Gravados!"); 
 } else { 
 JOptionPane.showMessageDialog(this, "Não há informações 
cadastradas! \n"); 
 } 
 } catch(IOException ioe){ 
 JOptionPane.showMessageDialog(this, "Erro ao gravar o arquivo! \n" 
+ ioe.getMessage()); 
 } 
} 
 
2. Exercícios 
2.1. Escreva um programa que ilustre o relançamento de uma exceção. Defina os métodos 
metodo1() e metodo2(). O método metodo2() deve lançar inicialmente uma exceção. O 
método metodo1() deve chamar o metodo2(), capturar a exceção e relançá-la. Chame o 
metodo1() a partir do main() e capture a exceção relançada. Imprima o rastreamento de 
pilha dessa exceção. 
 
2.2. Escreva um programa que simule a utilização de três métodos: 
(i) o primeiro deve possibilitar a conexão com um computador remoto. 
(ii) o segundo deve possibilitar a conexão com um banco de dados (que está instalado no 
computador remoto). 
(iii) o terceiro deve permitir que um valor seja armazenado no banco de dados. 
 Os métodos listados acima devem fazer parte de uma classe e você precisa gerenciar a 
conexão com o computador remoto, a conexão com o banco e também se a operação de gravação 
no banco de dados foi realizada com sucesso ou não. Esse processo pode ser controlado 
manualmente (por meio de eventos de clique em botões) ou automaticamente (no qual o sucesso ou 
não de uma operação é realizado de maneira aleatória, através de sorteio). Vale ressaltar que a 
tentativa de gravação (item iii) depende que as conexões i) e ii) tenham sido estabelecidas com 
sucesso. As seguintes exceções podem ser lançadas em cada um dos métodos: 
(i) java.net.SocketException 
(ii) java.sql.SQLException 
(iii) java.lang.ClassCastException 
 
2.3. O trecho de código abaixo funciona ou gera um erro de compilação? Explique. 
 
 public void metodo1(){ 
 try{ 
 
 } finally{ 
 
 } 
 } 
 
2.4. Qual a saída do código abaixo? 
public class Ex1 { 
 public static void lancar () { 
 System.out.print("throw "); 
 throw new RuntimeException(); 
 } 
 public static void main(String [] args) { 
 try { 
 System.out.print("olá "); 
 lancar(); 
 } catch (Exception e) { 
 System.out.print("catch "); 
 } finally { 
 System.out.print("finally "); 
 } 
 System.out.println("depois "); 
 } 
} 
 
a) olá throw catch 
b) o programa não compila 
c) olá throw RuntimeException catch depois 
d) olá throw RuntimeException 
e) olá throw catch finally depois 
f) olá throw catch finally depois RuntimeException 
 
2.5. Qual a saída do código abaixo? 
public class Ex2 { 
 public static void throwit() { 
 throw new RuntimeException(); 
 } 
 public static void main(String args[]){ 
 try { 
 System.out.println("Olá "); 
 throwit(); 
 System.out.println("Bloco try "); 
 } 
 finally { 
 System.out.println("Executando finally "); 
 } 
 } 
} 
 
a) O programa não compila. 
b) O programa executa e nenhuma exceção é lançada. 
c) O programa imprime “Olá”, depois imprime que uma exceção ocorreu em tempo de execução, 
então imprime “Bloco try” e por fim imprime “Executando finally”. 
d) O programa imprime “Olá”, depois imprime que uma exceção ocorreu em tempo de execução e 
por fim imprime “Executando finally”. 
e) O programa imprime “Olá”, então imprime “Executando finally” e por fim imprime que uma 
exceção ocorreu em tempo de execução.

Outros materiais