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
Podese 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