Programação Orientada a Objetos Tratamento de Exceções Ludimila Monjardim Casagrande ...
Exceções  Uma exceção é um sinal que indica que algum tipo de condição excepcional ocorreu durante a ...
Exceções  Uma exceção pode ser lançada quando:  O arquivo que o aplicativo está tentando abrir ...
Exceções  As duas atividades associadas à manipulação de uma exceção são:  geração: a sinalização ...
Exceções  Para cada exceção que pode ocorrer durante a execução do código, um bloco de ações de trata...
Tratamento de Exceções  A sintaxe para captura e tratamento de exceção é: try { // bloco de có...
Exemplo public static void main(String[] args) { try { FileWriter fileOut = new FileWriter("resultado.txt", true);...
Categorias de Exceções A classe Throwable é a raiz da ...
Hierarquia Error  A hierarquia Error descreve erros internos e problemas ocasionados pelo término de ...
Hierarquia Exception  Ao desenvolvermos aplicativos em Java, devemos utilizar as classes da hierarquia ...
RuntimeException  Uma RuntimeException ocorre normalmente devido a erros de programação.  Sendo assim, e...
Exemplos de RuntimeException  Algumas subclasses de RuntimeException são:  NullPointerException ...
Boas Práticas  Para evitar ClassCastException, use sempre instanceof: public static Aluno convertePa...
Boas Práticas  Para evitar NullPointerException, verifique sempre se a variável é diferente de null, antes de...
Boas Práticas  Para evitar ArrayIndexOutOfBoundsException, use sempre length: for (int i = 0; i < ar...
Checked Exceptions  As demais exceções, que são subclasses diretas de Exception, estão relacionadas a ...
Lançando uma Exceção  Embora toda checked exception deva ser tratada, não é obrigatório tratá-la no mesmo ...
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. ...
Lançando uma Exceção // Podemos criar nossos próprios métodos e lançar as possíveis exceções geradas: public static void...
Capturando as Exceções Lançadas import java.io.*; public class Copy { public static void main(String[] args) { ...
Criação de uma Classe de Exceção  Exceções são classes. Assim, é possível que uma aplicação defina suas própr...
Exemplo  Veja o exemplo de uma nova classe de exceção que pode ser utilizada na classe Resultado.java: ...
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 u...
Exemplo public class Resultado{ private double nota; public double getNota() { return nota; } p...
O Bloco finally  O bloco finally, quando presente, é sempre executado.  Em geral, ele inclui comandos qu...
Exemplo private static Vector vector; private static final int SIZE = 10; public static void main(String[] args) { ...
Tutoriais do Java  The Java Tutorials  Getting Started  http://java.sun.com/docs/books/tu...
Referências  Complete Java 2 Certification Study Guide Sybex  Java: Como programar Autor...
of 28

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

Published on: Mar 4, 2016
Published in: Technology      
Source: www.slideshare.net


Transcripts - 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  NegativeArraySizeExceptionTratamento 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çãoTratamento de Exceções ©2012 Ludimila Monjardim Casagrande 28

Related Documents