SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Programação Orientada a Objetos




       Tratamento de Exceções




           Ludimila Monjardim Casagrande
                       2012
Exceções

      Uma exceção é um sinal que indica que algum
         tipo de condição excepcional ocorreu durante a
         execução do programa.

      Assim, exceções estão associadas a condições
         de erro que não tinham como ser verificadas
         durante a compilação do programa.




Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   2
Exceções

      Uma exceção pode ser lançada quando:
            O arquivo que o aplicativo está tentando abrir
             não existe;
            A conexão com a rede está apresentando
             problemas;
            Um índice inexistente de um array é acessado;
            Ocorre uma divisão de um número inteiro por
             zero, por exemplo.


Tratamento de Exceções    ©2012 Ludimila Monjardim Casagrande   3
Exceções

      As duas atividades associadas à manipulação
         de uma exceção são:

            geração: a sinalização de que uma condição
             excepcional (por exemplo, um erro) ocorreu, e

            captura: a manipulação (tratamento) da situação
             excepcional, onde as ações necessárias para a
             recuperação da situação de erro são definidas.




Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   4
Exceções

      Para cada exceção que pode ocorrer durante a
         execução do código, um bloco de ações de
         tratamento (conhecido como exception handler)
         deve ser especificado.

      O compilador Java verifica e força que toda
         exceção “não-trivial” tenha um bloco de
         tratamento associado.
            As exceções desse tipo são chamadas de
             “checked exceptions”.

Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   5
Tratamento de Exceções

      A sintaxe para captura e tratamento de exceção é:
          try {
               // bloco de código que inclui comandos que podem gerar uma exceção
          } catch (XException ex) {
               // bloco de tratamento associado à condição de exceção
               // XException ou a qualquer uma de suas subclasses,
               // identificada aqui pelo objeto com referência ex
          } catch (YException ey) {
               // bloco de tratamento para a situação de exceção
               // YException ou a qualquer uma de suas subclasses
          } finally {
               // bloco de código que sempre será executado após
               // o bloco try, independentemente de sua conclusão
               // ter ocorrido normalmente ou ter sido interrompida
          }

Tratamento de Exceções          ©2012 Ludimila Monjardim Casagrande                 6
Exemplo
 public static void main(String[] args) {
   try {
       FileWriter fileOut = new FileWriter("resultado.txt", true);
       for (int i = 0; i < args.length; i++){
           String arg = args[i];
           fileOut.write(arg + "n");
       }
       fileOut.close();
   } catch (IOException e) {
       System.out.println("Ocorreu um erro de entrada e saída.");
   } catch (Exception e) {
       System.out.println("Ocorreu uma exceção genérica.");
   }
 }
Tratamento de Exceções     ©2012 Ludimila Monjardim Casagrande       7
Categorias de Exceções

                                                        A classe Throwable é a raiz da
                                                        hierarquia de exceções na API.




Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande                             8
Hierarquia Error

      A hierarquia Error descreve erros internos e
         problemas ocasionados pelo término de
         recursos dentro da máquina virtual Java.
      Não se deve lançar um objeto desse tipo.
         Apenas a JVM deve fazer uso das classes
         derivadas de Error.
      Pouco se pode fazer quando um erro desse
         tipo acontece. Essas situações, em geral, são
         bastante raras, portanto, não é exigido que um
         programa trate tais exceções.

Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   9
Hierarquia Exception

      Ao desenvolvermos aplicativos em Java,
         devemos utilizar as classes da hierarquia
         Exception.

      Esta também subdivide-se em duas, que são as
         exceções que derivam de RuntimeException e
         as demais subclasses que estendem
         diretamente a classe Exception (package
         java.lang).


Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   10
RuntimeException

      Uma RuntimeException ocorre normalmente
         devido a erros de programação.
      Sendo assim, exceções desse tipo indicam
         condições que nunca devem acontecer se o
         programa estiver implementado
         adequadamente.
      Por essa razão, o compilador não exige que
         esse tipo de exceção seja tratada, logo, são
         chamadas de “unchecked exceptions”.

Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   11
Exemplos de RuntimeException

      Algumas subclasses de RuntimeException são:
            NullPointerException
            IndexOutOfBoundsException
                  ArrayIndexOutOfBoundsException
                  StringIndexOutOfBoundsException
            ArithmeticException
            ClassCastException
            NegativeArraySizeException

Tratamento de Exceções      ©2012 Ludimila Monjardim Casagrande   12
Boas Práticas

      Para evitar ClassCastException, use sempre
         instanceof:

          public static Aluno converteParaAluno(Object obj) {
            Aluno a = null;
            if (obj instanceof Aluno){
                a = (Aluno)obj;
            }
            return a;
          }



Tratamento de Exceções      ©2012 Ludimila Monjardim Casagrande   13
Boas Práticas

      Para evitar NullPointerException, verifique sempre
         se a variável é diferente de null, antes de utilizá-la
         para acessar membros da classe:
          public static void main (String[] args){
            Object o = new Object();
            Aluno a = converteParaAluno(o);
            if( a != null ){
                String nome = a.getNome();
                System.out.println(nome);
            } else {
                System.out.println("O argumento não é do tipo Aluno");
            }
          }
Tratamento de Exceções        ©2012 Ludimila Monjardim Casagrande        14
Boas Práticas

      Para evitar ArrayIndexOutOfBoundsException,
         use sempre length:
          for (int i = 0; i < args.length; i++){
             String arg = args[i];
             System.out.println(arg + "n");
          }




Tratamento de Exceções       ©2012 Ludimila Monjardim Casagrande   15
Checked Exceptions

      As demais exceções, que são subclasses
         diretas de Exception, estão relacionadas a
         problemas que podem ocorrer com facilidade
         em aplicativos implementados corretamente,
         como por exemplo erros gerados por entrada
         incorreta de dados pelos usuários ou por
         problemas de leitura e escrita (I/O).

      O compilador exige que tais exceções sejam
         capturadas e tratadas, por isso são chamadas
         de “checked exceptions”.

Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   16
Lançando uma Exceção

      Embora toda checked exception deva ser
         tratada, não é obrigatório tratá-la no mesmo
         escopo do método no qual ela foi gerada.
      Sendo assim, é possível propagar a exceção
         para um nível acima na pilha de invocações.
      Para tanto, o método que está deixando de
         capturar e tratar a exceção faz uso da palavra-
         chave throws na sua declaração.


Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   17
Lançando uma Exceção

      Existem vários métodos da API do Java que são
         declarados de forma a lançar exceções.
      Por exemplo, o construtor da classe FileReader é
         declarado como segue:

           public FileReader(String filename)
                            throws FileNotFoundException

      Se um objeto da classe for criado usando um nome
         de arquivo inexistente, uma exceção do tipo
         FileNotFoundException é lançada.

Tratamento de Exceções    ©2012 Ludimila Monjardim Casagrande   18
Lançando uma Exceção
  // Podemos criar nossos próprios métodos e lançar as possíveis exceções geradas:
  public static void copyFile(String sourceFile) throws FileNotFoundException,
                                                        IOException {
     File inputFile = new File(sourceFile);
     File outputFile = new File("Output.txt");

       FileReader in = new FileReader(inputFile);
       FileWriter out = new FileWriter(outputFile);
       int c;

       while ((c = in.read()) != -1){
           out.write(c);
       }
       in.close();
       out.close();

       System.out.println("Cópia realizada com sucesso.");
  }
Tratamento de Exceções            ©2012 Ludimila Monjardim Casagrande                19
Capturando as Exceções Lançadas
  import java.io.*;

  public class Copy {
       public static void main(String[] args) {
         try {
             copyFile("Copy.txt");
         } catch (FileNotFoundException e) {
             System.out.println("Arquivo não encontrado.");
         } catch (IOException e) {
             System.out.println("Ocorreu um erro de entrada e saída.");
         }
       }
       public static void copyFile(String file) throws FileNotFoundException,
                                                       IOException { …
  }

Tratamento de Exceções       ©2012 Ludimila Monjardim Casagrande                20
Criação de uma Classe de Exceção

      Exceções são classes. Assim, é possível que
         uma aplicação defina suas próprias exceções
         através do mecanismo de definição de classes.
      Para criar uma nova exceção deve-se estender
         a classe Exception ou uma de suas subclasses.
      Um classe de exceção pode conter tudo o que
         uma classe regular contém, isto é, atributos,
         construtores e métodos.


Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   21
Exemplo

      Veja o exemplo de uma nova classe de exceção
         que pode ser utilizada na classe Resultado.java:
          public class NotaInvalidaException extends Exception {

               public NotaInvalidaException() {
                 super();
               }

               public NotaInvalidaException(String message) {
                 super(message);
               }
          }

Tratamento de Exceções        ©2012 Ludimila Monjardim Casagrande   22
Definindo uma Condição de Exceção

      Para gerar uma condição de erro durante a
         execução de um método e lançar uma exceção
         específica, um objeto dessa classe deve ser
         criado e, através do comando throw, propagado
         para os métodos anteriores na pilha de
         execução.




Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   23
Exemplo
 public class Resultado{
      private double nota;
      public double getNota() {
        return nota;
      }
      public void setNota(double nota) throws NotaInvalidaException {
        if(nota >= 0.0 && nota <= 10.0){
            this.nota = nota;
        } else {
            throw new NotaInvalidaException("Erro: A nota deve pertencer
                                             ao intervalo de 0 a 10.");
        }
      }
 }

Tratamento de Exceções       ©2012 Ludimila Monjardim Casagrande           24
O Bloco finally

      O bloco finally, quando presente, é sempre
         executado.
      Em geral, ele inclui comandos que liberam
         recursos que eventualmente possam ter sido
         alocados durante o processamento do bloco try
         e que podem ser liberados, independentemente
         de a execução ter encerrado com sucesso ou
         ter sido interrompida por uma condição de
         exceção.
      A presença desse bloco é opcional.

Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   25
Exemplo
   private static Vector vector;
   private static final int SIZE = 10;
   public static void main(String[] args) {
       PrintWriter out = null;
       try {
            out = new PrintWriter(new FileWriter("OutFile.txt"));
            for (int i = 0; i < SIZE; i++) {
                 out.println(“Valor da posição: " + i + " = " + vector.elementAt(i));
            }
       } catch (IOException e) {
            System.err.println("Caught IOException: " + e.getMessage());
       } finally {
            if (out != null) {
                 System.out.println("Closing PrintWriter");
                 out.close();
            } else {
                 System.out.println("PrintWriter not open");
            }
       }
   }
Tratamento de Exceções           ©2012 Ludimila Monjardim Casagrande                    26
Tutoriais do Java

      The Java Tutorials
            Getting Started
                  http://java.sun.com/docs/books/tutorial/getStarted/
            Learning the Java Language
                  http://java.sun.com/docs/books/tutorial/java/




Tratamento de Exceções        ©2012 Ludimila Monjardim Casagrande        27
Referências

      Complete Java 2 Certification
         Study Guide
         Sybex

      Java: Como programar
         Autores: H. M. Deitel e P. J. Deitel
         Editora: Pearson – 6ª Edição




Tratamento de Exceções   ©2012 Ludimila Monjardim Casagrande   28

Contenu connexe

Tendances

Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo javaFAFICA
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesecosio GmbH
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha casoEder Samaniego
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaDaniel Brandão
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresWillians Miyabara
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5César Augusto Pessôa
 
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and MockitoAn Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockitoshaunthomas999
 

Tendances (20)

Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Tratamento de erros
Tratamento de errosTratamento de erros
Tratamento de erros
 
Java 13 Excecoes
Java 13 ExcecoesJava 13 Excecoes
Java 13 Excecoes
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Aprendendo a Usar o Netbeans
Aprendendo a Usar o NetbeansAprendendo a Usar o Netbeans
Aprendendo a Usar o Netbeans
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examples
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha caso
 
Exception handling in Java
Exception handling in JavaException handling in Java
Exception handling in Java
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Java www
Java wwwJava www
Java www
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and MockitoAn Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
An Introduction to JUnit 5 and how to use it with Spring boot tests and Mockito
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 

Similaire à POO - 22 - Tratamento de Exceções em Java

Excecoes
ExcecoesExcecoes
ExcecoesEMSNEWS
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java IVerônica Veiga
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: ExceçõesEduardo Mendes
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesFAFICA
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em JavaWilson Júnior
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Helder da Rocha
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 

Similaire à POO - 22 - Tratamento de Exceções em Java (20)

Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Exceptions Em Java UFF
Exceptions Em Java UFFExceptions Em Java UFF
Exceptions Em Java UFF
 
Excecoes
ExcecoesExcecoes
Excecoes
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Excecoes em Java
Excecoes em JavaExcecoes em Java
Excecoes em Java
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Apostila: Curso de java I
Apostila: Curso de java IApostila: Curso de java I
Apostila: Curso de java I
 
Certificação Java: Exceções
Certificação Java: ExceçõesCertificação Java: Exceções
Certificação Java: Exceções
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
Aula de Java 2: exceções (1999): Programa ASIT (IBPINET/UFRJ)
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 

Plus de Ludimila Monjardim Casagrande

POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 

Plus de Ludimila Monjardim Casagrande (19)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 

Dernier

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Dernier (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

POO - 22 - Tratamento de Exceções em Java

  • 1. Programação Orientada a Objetos Tratamento de Exceções Ludimila Monjardim Casagrande 2012
  • 2. Exceções  Uma exceção é um sinal que indica que algum tipo de condição excepcional ocorreu durante a execução do programa.  Assim, exceções estão associadas a condições de erro que não tinham como ser verificadas durante a compilação do programa. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 2
  • 3. Exceções  Uma exceção pode ser lançada quando:  O arquivo que o aplicativo está tentando abrir não existe;  A conexão com a rede está apresentando problemas;  Um índice inexistente de um array é acessado;  Ocorre uma divisão de um número inteiro por zero, por exemplo. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 3
  • 4. Exceções  As duas atividades associadas à manipulação de uma exceção são:  geração: a sinalização de que uma condição excepcional (por exemplo, um erro) ocorreu, e  captura: a manipulação (tratamento) da situação excepcional, onde as ações necessárias para a recuperação da situação de erro são definidas. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 4
  • 5. Exceções  Para cada exceção que pode ocorrer durante a execução do código, um bloco de ações de tratamento (conhecido como exception handler) deve ser especificado.  O compilador Java verifica e força que toda exceção “não-trivial” tenha um bloco de tratamento associado.  As exceções desse tipo são chamadas de “checked exceptions”. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 5
  • 6. Tratamento de Exceções  A sintaxe para captura e tratamento de exceção é: try { // bloco de código que inclui comandos que podem gerar uma exceção } catch (XException ex) { // bloco de tratamento associado à condição de exceção // XException ou a qualquer uma de suas subclasses, // identificada aqui pelo objeto com referência ex } catch (YException ey) { // bloco de tratamento para a situação de exceção // YException ou a qualquer uma de suas subclasses } finally { // bloco de código que sempre será executado após // o bloco try, independentemente de sua conclusão // ter ocorrido normalmente ou ter sido interrompida } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 6
  • 7. Exemplo public static void main(String[] args) { try { FileWriter fileOut = new FileWriter("resultado.txt", true); for (int i = 0; i < args.length; i++){ String arg = args[i]; fileOut.write(arg + "n"); } fileOut.close(); } catch (IOException e) { System.out.println("Ocorreu um erro de entrada e saída."); } catch (Exception e) { System.out.println("Ocorreu uma exceção genérica."); } } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 7
  • 8. Categorias de Exceções A classe Throwable é a raiz da hierarquia de exceções na API. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 8
  • 9. Hierarquia Error  A hierarquia Error descreve erros internos e problemas ocasionados pelo término de recursos dentro da máquina virtual Java.  Não se deve lançar um objeto desse tipo. Apenas a JVM deve fazer uso das classes derivadas de Error.  Pouco se pode fazer quando um erro desse tipo acontece. Essas situações, em geral, são bastante raras, portanto, não é exigido que um programa trate tais exceções. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 9
  • 10. Hierarquia Exception  Ao desenvolvermos aplicativos em Java, devemos utilizar as classes da hierarquia Exception.  Esta também subdivide-se em duas, que são as exceções que derivam de RuntimeException e as demais subclasses que estendem diretamente a classe Exception (package java.lang). Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 10
  • 11. RuntimeException  Uma RuntimeException ocorre normalmente devido a erros de programação.  Sendo assim, exceções desse tipo indicam condições que nunca devem acontecer se o programa estiver implementado adequadamente.  Por essa razão, o compilador não exige que esse tipo de exceção seja tratada, logo, são chamadas de “unchecked exceptions”. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 11
  • 12. Exemplos de RuntimeException  Algumas subclasses de RuntimeException são:  NullPointerException  IndexOutOfBoundsException  ArrayIndexOutOfBoundsException  StringIndexOutOfBoundsException  ArithmeticException  ClassCastException  NegativeArraySizeException Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 12
  • 13. Boas Práticas  Para evitar ClassCastException, use sempre instanceof: public static Aluno converteParaAluno(Object obj) { Aluno a = null; if (obj instanceof Aluno){ a = (Aluno)obj; } return a; } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 13
  • 14. Boas Práticas  Para evitar NullPointerException, verifique sempre se a variável é diferente de null, antes de utilizá-la para acessar membros da classe: public static void main (String[] args){ Object o = new Object(); Aluno a = converteParaAluno(o); if( a != null ){ String nome = a.getNome(); System.out.println(nome); } else { System.out.println("O argumento não é do tipo Aluno"); } } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 14
  • 15. Boas Práticas  Para evitar ArrayIndexOutOfBoundsException, use sempre length: for (int i = 0; i < args.length; i++){ String arg = args[i]; System.out.println(arg + "n"); } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 15
  • 16. Checked Exceptions  As demais exceções, que são subclasses diretas de Exception, estão relacionadas a problemas que podem ocorrer com facilidade em aplicativos implementados corretamente, como por exemplo erros gerados por entrada incorreta de dados pelos usuários ou por problemas de leitura e escrita (I/O).  O compilador exige que tais exceções sejam capturadas e tratadas, por isso são chamadas de “checked exceptions”. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 16
  • 17. Lançando uma Exceção  Embora toda checked exception deva ser tratada, não é obrigatório tratá-la no mesmo escopo do método no qual ela foi gerada.  Sendo assim, é possível propagar a exceção para um nível acima na pilha de invocações.  Para tanto, o método que está deixando de capturar e tratar a exceção faz uso da palavra- chave throws na sua declaração. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 17
  • 18. Lançando uma Exceção  Existem vários métodos da API do Java que são declarados de forma a lançar exceções.  Por exemplo, o construtor da classe FileReader é declarado como segue: public FileReader(String filename) throws FileNotFoundException  Se um objeto da classe for criado usando um nome de arquivo inexistente, uma exceção do tipo FileNotFoundException é lançada. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 18
  • 19. Lançando uma Exceção // Podemos criar nossos próprios métodos e lançar as possíveis exceções geradas: public static void copyFile(String sourceFile) throws FileNotFoundException, IOException { File inputFile = new File(sourceFile); File outputFile = new File("Output.txt"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1){ out.write(c); } in.close(); out.close(); System.out.println("Cópia realizada com sucesso."); } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 19
  • 20. Capturando as Exceções Lançadas import java.io.*; public class Copy { public static void main(String[] args) { try { copyFile("Copy.txt"); } catch (FileNotFoundException e) { System.out.println("Arquivo não encontrado."); } catch (IOException e) { System.out.println("Ocorreu um erro de entrada e saída."); } } public static void copyFile(String file) throws FileNotFoundException, IOException { … } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 20
  • 21. Criação de uma Classe de Exceção  Exceções são classes. Assim, é possível que uma aplicação defina suas próprias exceções através do mecanismo de definição de classes.  Para criar uma nova exceção deve-se estender a classe Exception ou uma de suas subclasses.  Um classe de exceção pode conter tudo o que uma classe regular contém, isto é, atributos, construtores e métodos. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 21
  • 22. Exemplo  Veja o exemplo de uma nova classe de exceção que pode ser utilizada na classe Resultado.java: public class NotaInvalidaException extends Exception { public NotaInvalidaException() { super(); } public NotaInvalidaException(String message) { super(message); } } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 22
  • 23. Definindo uma Condição de Exceção  Para gerar uma condição de erro durante a execução de um método e lançar uma exceção específica, um objeto dessa classe deve ser criado e, através do comando throw, propagado para os métodos anteriores na pilha de execução. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 23
  • 24. Exemplo public class Resultado{ private double nota; public double getNota() { return nota; } public void setNota(double nota) throws NotaInvalidaException { if(nota >= 0.0 && nota <= 10.0){ this.nota = nota; } else { throw new NotaInvalidaException("Erro: A nota deve pertencer ao intervalo de 0 a 10."); } } } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 24
  • 25. O Bloco finally  O bloco finally, quando presente, é sempre executado.  Em geral, ele inclui comandos que liberam recursos que eventualmente possam ter sido alocados durante o processamento do bloco try e que podem ser liberados, independentemente de a execução ter encerrado com sucesso ou ter sido interrompida por uma condição de exceção.  A presença desse bloco é opcional. Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 25
  • 26. Exemplo private static Vector vector; private static final int SIZE = 10; public static void main(String[] args) { PrintWriter out = null; try { out = new PrintWriter(new FileWriter("OutFile.txt")); for (int i = 0; i < SIZE; i++) { out.println(“Valor da posição: " + i + " = " + vector.elementAt(i)); } } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } finally { if (out != null) { System.out.println("Closing PrintWriter"); out.close(); } else { System.out.println("PrintWriter not open"); } } } Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 26
  • 27. Tutoriais do Java  The Java Tutorials  Getting Started  http://java.sun.com/docs/books/tutorial/getStarted/  Learning the Java Language  http://java.sun.com/docs/books/tutorial/java/ Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 27
  • 28. Referências  Complete Java 2 Certification Study Guide Sybex  Java: Como programar Autores: H. M. Deitel e P. J. Deitel Editora: Pearson – 6ª Edição Tratamento de Exceções ©2012 Ludimila Monjardim Casagrande 28