aula 13 tratamento de exceções€¦ · aula 13 –tratamento de ... • problemas no hardware •...
TRANSCRIPT
![Page 1: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/1.jpg)
Aula 13 – Tratamento de
Exceções
Disciplina: Programação Estruturada e Orientada a Objetos
Prof. Bruno Gomes
http://www.profbrunogomes.com.br/
![Page 2: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/2.jpg)
Agenda da Aula
Exceções;
![Page 3: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/3.jpg)
Por que tartar Exceções?
Durante a execução de programas, podem ocorrer muitostipos de erros de vários graus de severidade;
Exemplos:• Problemas no hardware• Arrays fora de faixa• Valores de variáveis• Divisão por zero• Parâmetros de métodos• Falha de Memória
• Erro de entrada e saída (IO)• Erros da aplicação• Saldo insuficiente• Usuário não existe• Nota invalida
Dependendo do tipo de erro, o programaé finalizado, os dados são perdidos e ocomputador corre o risco de travar.
![Page 4: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/4.jpg)
Quando um erro acontece
O que deveria ser feito:
Notificar o usuário sobre o erro;
Conseguir salvar todo o trabalho;
Permitir que usuários saiam elegantemente doprograma, e depois retornem.
![Page 5: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/5.jpg)
Exceções
Exceção é um desvio no fluxo de execução normal doprograma: Acontece quando encontra algo inesperado.
Indica que houve problema na execução de um blocodo programa;
O tratamento de exceções permite encontrar erros etratá-los. Se não for tratado, o programa pode parar;
O uso correto de exceções torna o programa maisrobusto e confiável.
![Page 6: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/6.jpg)
O que acontece quando um erro ocorre em um programa Java
Um objeto é criado;
O objeto contém informações sobre o erro, assimcomo o tipo e o estado do programa;
A ação de capturar esse objeto chamamos dethrowing an exception;
O ambiente de execução (runtime system) tentaencontrar algum tratamento a exceção;
A busca segue a call stack – lista de chamadasde métodos.
IMPORTANTE
![Page 7: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/7.jpg)
Hierarquia de Exceções em Java
Em Java, um objeto de exceção é sempre umainstância de uma classe derivada Throwable.
![Page 8: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/8.jpg)
Hierarquia de Exceções em Java
Error: Ocorrem devido a problemas de SO ou hardware;
Hierarquia Exception:
Divide em dois ramos: As que derivam deRuntimeException e as que não derivam;
Ao se fazer um programa Java, deve focalizar nestahierarquia.
![Page 9: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/9.jpg)
Hierarquia de Exceções em Java
RuntimeException: Acontece porque se fez um erro de programação;
Exemplos: Acesso de array proibido; divisão por 0;
Qualquer outra Exceção: Ocorre porque algo ruim, como um erro de E/S,
aconteceu com o programa bom em outros aspectos;
Exemplos: Tentar ler além do fim de um arquivo; tentar abrir um URL
malformado.
![Page 10: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/10.jpg)
Tipos de Exceções
Exceção Verificada (checked):
Exceções previsíveis (sabe que o erro poderá ocorrere já sabe como corrigi-lo).
Obrigatoriamente devem ser tratadas;
São utilizadas para erros recuperáveis;
Ex.: tentar sacar dinheiro sem saldo.
![Page 11: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/11.jpg)
Tipos de Exceções
Exceção Não Verificada (unchecked): Não precisam ser tratadas, mas podem ser;
São utilizadas para erros irrecuperáveis, inesperado nasua aplicação;
Se uma exceção não verificada ocorrer e não fortratada, o programa pode parar (console).
Solução: mostrar uma mensagem para o usuáriocomunicando que o erro ocorreu.
Subclasse de RuntimeException;
Ex.: banco de dados, falhas de rede, arquivosausentes
![Page 12: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/12.jpg)
Formas de Capturar um Exceção (objeto criado)
Através de uma bloco try;
Ou através de uma cláusula throws naassinatura do método.
![Page 13: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/13.jpg)
Bloco try-catch-finally
Um bloco que tenta (try) chamar um método ouoperação que pode disparar uma exceção;
Uma exceção é um objeto que deve sercapturado (catch):
É nesse bloco que a exceção deve ser tratada.
Um trecho de código pode ser executado sempre(finally).
![Page 14: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/14.jpg)
Bloco try-catch-finally
Representação:try {
// Executa código// que pode disparar exceção
} catch (Exception exception){// Trata exceção// exception é uma referência// para objeto da// classe Exception
} finally {// Este bloco é sempre// executado, independente de// ocorrer exceção
}
Tenta executar
Captura
Sempre Executa
![Page 15: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/15.jpg)
Exemplo
Problema: a variável numero pode conter algumcaractere que não seja número.
parseInt dispara a exceção:
NumberFormatException (não verificada)
System.out.print("Digite um número");
String numero = sc.nextLine();
int x = Integer.parseInt(numero);
![Page 16: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/16.jpg)
Tratando
Se a exceção for disparada, o restante dos comandos dobloco try não serão mais executados;
O fluxo de execução muda para a captura (bloco catch);
System.out.print("Digite um número");
String numero = sc.nextLine();
int x;
try{
x = Integer.parseInt(numero);
System.out.println("Numero digitado é válido");
} catch (NumberFormatException exception){
System.out.println("Digite um número válido");
}
![Page 17: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/17.jpg)
Bloco Catch
Pode haver mais de um bloco catch
Cada bloco trata um tipo específico de exceção;
O bloco try contém métodos que podem disparar todas asexceções;
Um método pode disparar mais de uma exceção.
try {// bloco de comandos
} catch (Excecao1 ex1) {// Trata exceção1
} catch (Excecao2 ex2) {// Trata exceção2
} catch (Excecao3 ex3){// Trata exceção3
}
![Page 18: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/18.jpg)
Dúvidas?
![Page 19: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/19.jpg)
Exercício
Utilizando o exercício da atividade anterior, tratara exceção no método da divisão da calculadora,e evitar que o programa seja finalizado caso ousuário tente dividir um número por zero.
Deve imprimir a mensagem: “Não é possível dividir um número por zero. Tente
novamente.”.
Pesquisar e utilizar: Qual exceção é disparadaquando um número é dividido por zero.
![Page 20: Aula 13 Tratamento de Exceções€¦ · Aula 13 –Tratamento de ... • Problemas no hardware • Arrays fora de faixa • Valores de variáveis • Divisão por zero • Parâmetros](https://reader034.vdocuments.mx/reader034/viewer/2022052519/605110b517eca27663551768/html5/thumbnails/20.jpg)
Exercício
Criar uma classe de teste/executável (main), enela declarar um array de inteiros com 5posições.
Tentar armazenar qualquer valor na posição 6. Tratar a exceção com o bloco try catch.
Pesquisar e utilizar: Qual exceção é disparadaquando tenta acessar uma posição de um arrayque não existe.