Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros...

Post on 13-Aug-2020

1 views 0 download

Transcript of Conceitos de Orientação a Objetosrogerio/lingprog/10 - Excecoes.pdfExceções Exceções e erros...

Programação Orientada a Objetos IIJAVA

Décima Segunda Aula

1

Prof. Rogério Albuquerque de Almeida

Vetores

Tratamento de Exceções

Programação Orientada a Objeto II

2

Prof. Rogério Albuquerque de Almeida

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.

4Prof. Rogério Albuquerque de Almeida

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 )

6Prof. Rogério Albuquerque de Almeida

Exemplo

TstVector.java

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

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

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

Exceções - classes

Exceções - classes

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

quando executado gera o seguinte resultado

Gerenciando Exeçõestry/catch

O bloco de comando try/catch 

Gerenciando Exceçõesmais de uma exceção

Se for passada uma string gera NumberFormatException

Se y for zero gera ArithmeticException

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!)

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

Gerenciando Exceçõesbloco catch

Gerenciando Exceçõesbloco finally

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

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;

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

Repassar a Exceptionclausula throws

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

Entendendo o Stack Trace

ExceptionMensagem de

erroClasse e Linha onde

ocorreu o erro

“pilha” de

métodos

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()

Exceptions Customizadas

Exercícios

Implemente as classes a baixo:

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