27
Programação Orientada a Objetos II JAVA Décima Segunda Aula 1 Prof. Rogério Albuquerque de Almeida

Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Programação Orientada a Objetos IIJAVA

Décima Segunda Aula

1

Prof. Rogério Albuquerque de Almeida

Page 2: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Vetores

Tratamento de Exceções

Programação Orientada a Objeto II

2

Prof. Rogério Albuquerque de Almeida

Page 3: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

3Prof. Rogério Albuquerque de Almeida

Vector

1. Vector é uma versão extravagante de um array. O vetor pode crescer

automaticamente quando necessário;

2. Vector tem um método size, o qual retorna o número de elementos

atuais;

3. Vector pode armazenar elementos de diferentes tipos;

4. Cada elemento de um vector é referência a Object;

5. Vector não pode armazenar um tipo básico (int, double, etc.). Você deve

usar conversão para manipular estes tipos.

6. Vectors não estão definidos na linguagem. Fazem parte do pacote

java.util, devendo usar import java.útil no início do programa

7. Vectors são ligeiramente mais lentos que arrays.

Page 4: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

4Prof. Rogério Albuquerque de Almeida

Page 5: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

5Prof. Rogério Albuquerque de Almeida

Vector : Métodos e Construtores

• Três formas básicas (métodos sobrecarregados):

• Vector ( capacidade inicial )

• Vector ( ) - capacidade inicial padrão é 10 elementos

• Vector ( cap. Inicial, incremento )

Page 6: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

6Prof. Rogério Albuquerque de Almeida

Exemplo

TstVector.java

http://www.lncc.br/~rogerio/poo2/TstVector.java

Page 7: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções

Exceções e erros podem ocorrer em qualquer sistema

Podem ser causados por: Usuário (entradas inválidas) Sistema (falhas no hardware ou no S.O.) Aplicação (falhas na pecinha)

Quando a máquina virtual java encontra uma exceção

Tanto exceções quantos erros são classes em java

Page 8: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções – classes

Exceção – Exception Podem ser tratadas pela aplicação 

Usuário entra com uma string quando a aplicação espera um número

Arquivo que esta sendo aberto não existe

Erros – Error Impossíveis de serem tratadas pela aplicação, neste caso 

a aplicação é encerrada Falha na memória

Page 9: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções - classes

Page 10: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções - classes

Page 11: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando ExceçõesO código abaixo ...

quando executado gera o seguinte resultado

Page 12: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exeçõestry/catch

O bloco de comando try/catch 

Page 13: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesmais de uma exceção

Se for passada uma string gera NumberFormatException

Se y for zero gera ArithmeticException

Page 14: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesbloco catch

Para cada exceção que possa ser lançada num bloco de código deve existir um catch para esta exceção

Pode­se usar a hierarquia de classes no bloco catch, tratando a exception pai ao invés da filha FileNotFoundException estende IOException, neste caso 

se tratarmos IOException e uma FileNotFoundException for lançada, esta também será tratada no bloco catch

Seguindo esta linha, se tratarmos Exception estaremos tratando todas as exceções possíveis

(Isto pode ser bom ou não, depende da sua aplicação!)

Page 15: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesbloco catch

Apenas um bloco catch e tratado quando ocorre uma exceção Se é tratada a exeção NumberFormatException e também 

a Exception, apenas um dos blocos será executado

Caso mais de um bloco catch for criado, as exceções devem ser tratadas na ordem da “filha” para a “pai” Se Exception for tratada no primeiro bloco catch nenhum 

outro bloco será tratado, neste caso o java lança um erro de compilação

Page 16: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesbloco catch

Page 17: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesbloco finally

Page 18: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Gerenciando Exceçõesbloco finally

Um bloco finaly é SEMPRE executado, mesmo se: Acontecer uma exception que foi tratada Acontecer uma exception que não foi tratada O comando return ter sido chamado dentro do bloco do 

try O comando return ter sido chamado dentro do bloco 

catch System.exit ter sido chamado

Page 19: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções mais comuns

NullPointerException Um método ou atributo de um objeto foi chamado, mas o 

mesmo é nulo String x = null; x.toUpperCase();

ClassCastException Tentar fazer cast de um objeto para uma variável que não 

é da mesma classe do objeto Object ob = new Funcionario(); Carro c = (Carro) ob;

Page 20: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceções mais comuns

ArrayIndexOutOfBoundsException Tentar acessar um indice de um array que esta fora dos 

limites do array int[] x = new int[5]; int[­1]=2; int[5]=3; int[10]=3;

ClassNotFoundException Ao utilizar uma classe a mesma não se encontra no 

classpath em tempo de execução

Page 21: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Repassar a Exceptionclausula throws

Page 22: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Repassar a Exceptionclausula throws

A cláusula throws é responsável por indicar num método quais exceptions aquele método pode lançar

Na chamada a este método passa a ser OBRIGATÓRIA o tratamento das exceptions que podem ser lançadas pelo método

Page 23: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Entendendo o Stack Trace

ExceptionMensagem de

erroClasse e Linha onde

ocorreu o erro

“pilha” de

métodos

Page 24: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceptions Customizadas

Parar criar uma exception customizada basta estender a classe Exception

Exception possui um parâmetro String no construtor que armazena a mensagem de erro  a ser exibida no stack trace, esta também pode ser acessada através do método getMessage()

Page 25: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exceptions Customizadas

Page 26: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exercícios

Implemente as classes a baixo:

Page 27: Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros podem ocorrer em qualquer sistema Podem ser causados por: Usuário (entradas inválidas)

Exercícios

1)Execute a classe TesteLista e verifique o que acontece

2)Faça o tratamento de erro na classe Lista

3)Altere a classe Lista para que o erro deva ser tratado no método main da classe TesteLista

4)Crie uma classe de exceção personalizada ListaException para que a classe Lista lance apenas esta exception