Programação Orientada a Objetos II Aula

Propaganda
Programação Orientada a Objetos II
Aula - 10
Tratamento de Erros/Exceções
Prof. Pedro Luís Antonelli
Anhanguera Educacional
Tipos de “erros” em programação
Existem basicamente três tipos de erros a que um
programa de computador pode estar sujeito:
- Erros de Sintaxe ( escrita );
- Erros de Semântica ( lógica );
- Erros durante a execução ( exceções ).
Erros de Sintaxe
A Sintaxe diz respeito à forma como as instruções devem
ser escritas, ou seja, o conjunto de regras formais que
especificam a composição dos algoritmos a partir de
letras, dígitos e outros símbolos.
É o tipo mais primitivo de erro e o mais facilmente
detectado, pois são facilmente encontrados pelos
programas tradutores ( interpretadores e compiladores).
Exemplo de erros de Sintaxe
Corrigindo os erros de Sintaxe
Erros de Semântica
A Semântica diz respeito ao significado lógico das
instruções que serão executadas pelo computador.
Os erros de semântica também são conhecidos como
erros de “lógica” do programa.
A violação da semântica de um algoritmo não impede
que ele seja executado, nem causa um erro durante sua
tradução.
Todavia, ele processará um resultado diferente do
desejado.
Exemplo de erro de Semântica
Corrigindo o de erro de Semântica
Erros de execução ( exceção)
Os erros durante a execução dos programas são
chamados de exceções.
Em outras linguagens são chamados genericamente de
“RunTime Error”, e podem ser causados por uma
enormidade de circunstâncias, tais como:
- Falta de memória;
- Impossibilidade de gravar ou de abrir um arquivo;
- Atribuição de um valor impossível a um objeto;
- Divisão por zero;
- Etc.
Exemplo de erro de execução
Erros de execução ( exceção)
Os erros durante a execução dos programas podem
causar a interrupção dos mesmos, com consequências
das mais imprevisíveis.
Chamamos de exceção a um problema durante a
execução do programa.
O tratamento de exceções é utilizado em situações em
que o sistema, no caso da linguagem Java a JMV, pode se
recuperar do mau funcionamento que causou a exceção.
Tratamento de exceções em Java
A linguagem Java disponibiliza um mecanismo para tratamento das
exceções:
try {
// código a ser executado
} catch (ClasseDeExceção instânciaDaExceção) {
// tratamento da exceção
} finally {
// código a ser executado mesmo que uma exceção
//seja lançada
}
Tratamento de exceções em Java
• try ( tentar) é usada para indicar um bloco de código que
possa ocorrer uma exceção.
• catch ( pegar) serve para manipular as exceções, ou seja,
tratar o erro. Pode existir mais de um bloco catch.
• ClasseDeExceção e instânciaDaExceção classe da exceção
a ser tratada;
• finally (finalmente) sempre será executado depois do
bloco try/catch e é opcional.
Tratando a exceção do exemplo anterior
Usando o bloco finally no exemplo anterior
Observações sobre o bloco finally:
A função básica de finally é sempre executar seu bloco
de dados mesmo que uma exceção seja lançada.
É muito útil para liberar recursos do sistema quando
utilizamos, por exemplo, conexões de banco de dados e
abertura de buffer para leitura ou escrita de arquivos,
etc.
Observações sobre as exceções em Java:
As exceções são, na verdade, instâncias de classes e
como qualquer classe ou objeto, podemos facilmente
manipular.
Todas as exceções em Java derivam da classe Throwable.
Existem métodos comuns entre todas as classes de
Exceções.
Exemplo de uso de um método de uma
exceções em Java:
Hierarquia das classe de exceções:
Modalidades de exceções em Java: Error
Hierarquia em laranja na imagem, representam
situações incomuns, que não são causadas pelo
programa;
Indicam situações que não acontecem usualmente
durante a execução de um programa.
Exemplo:
Quando uma chamada recursiva causa um estouro da
pilha de execução é gerada uma exceção do tipo
StackOverflowError.
Modalidades de exceções em Java:
Checked Exception
Hierarquia em cinza, representam situações que,
geralmente, não são erros de programação e sim
indisponibilidade de recursos ou condição necessária
para a correta execução inexistente.
Exemplo:
Em aplicações distribuídas existe dependência externa de
rede de comunicação, no caso do servidor não ser
encontrado é gerado uma exceção do tipo
NoRouteToHostException.
Modalidades de exceções em Java:
Unchecked Exception (RuntimeException)
Hierarquia em azul escuro, representam situações que,
geralmente, identificam erros de programação (programa
não é robusto) ou mesmo situações incomuns/difíceis de
tratar.
Exemplo:
Acessar índice inválido em um array gera uma exceção do
tipo ArrayIndexOutOfBoundsException.
Forçando de exceções em Java: throw
É possível em algum trecho do nosso programa, se uma
determinada condição acontecer, forçar ( “throw”- lançar
) uma exceção para informar que a situação esperada
aconteceu.
Vamos implementar no nosso exemplo, uma “exceção”
caso o valor da média seja menor que zero.
Implementando o método menorQueZero ...
Chamando o método e testando...
Implementando mais de um bloco catch ...
Testando as exceções ...
Modificando o aplicativo para testes ...
Testando o resultado Infinity em cálculos ...
BIBLIOGRAFIA BÁSICA PADRÃO
SANTOS, Rafael. Introdução à Programação
Orientada a Objetos Usando Java. 1ª ed. Rio de
Janeiro: Campus - Elsevier, 2008.
BIBLIOGRAFIA BÁSICA DA UNIDADE
1) DEITEL, Harvery M.. Java : Como Programar. 6ª ed.
São Paulo: Pearson - Prentice Hall, 2007.
2) SIERRA, Kathy; BATES, Bert. Use a Cabeça! Java. 1ª ed.
Rio de Janeiro: Alta Books, 2005.
BIBLIOGRAFIA COMPLEMETAR
1) BARNES, David J.. PROGRAMAÇÃO ORIENTADA A
OBJETOS COM JAVA : UMA INTRODUÇÃO PRÁTICA
USANDO O BLUE J. 1ª ed. São Paulo: Pearson, 2004.
2) KURNIAWAN, Budi. Java para Web com Servlets, JSP e
EJB. 1ª ed. Rio de Janeiro: Ciência Moderna, 2002.
3) GOMES ASCENCIO, Ana Fernanda; CAMPOS, Edilene
A.V. de. Fundamentos da Programação de Computadores
: Algoritmos, Pascal, C/C++ e Java. 2ª ed. São Paulo:
Pearson - Prentice Hall, 2008.
4) HORSTMANN, Cay S.; CORNELL, Gary. Core Java 2 :
Fundamentos. 7ª ed. Rio de Janeiro: Alta Books, 2005.
5) ANSELMO, Fernando. Tudo Sobre a JSP : Com o
Netbeans em Aplicações Distribuídas. 1ª ed. São Paulo:
VisualBooks, 2005.
Download