20
Aula 13 Tratamento de Exceções Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

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

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.