JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 28 de setembro de 12

Documentos relacionados
Programação Orientada a Objetos

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções

Tratamento de Exceções. Java Avançado. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções cont. Profa. Thienne Johnson EACH/USP

Tratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)

9 Exceções. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Orientada a Objetos SANTOS, Rafael (PLT)

O tratamento de erros em Java

[Desenvolvimento OO com Java] Exceções e controle de erros

Java Standard Edition (JSE)

AULA TEÓRICA 3. Tema 4. Excepções Ø Tratamento de excepções

Notas de Aula 09: Tratamento de exceções

Exceções. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP

Tratamento de Exceções. Prof. Leonardo Barreto Campos 1

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Programação Orientada a Objetos. Manipulação de Exceções

Programação Orientada a Objetos JAVA - NETBEANS

Exceções. Profa. Patrícia A. Jaques Slides alterados por Leandro Tonietto Mar-12. quarta-feira, 21 de março de 12

Herança. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Tratamento de Erro e Javadoc. Professor: Norton T. Roman

Mecanismo de exceções em Java

Tratamento de Exceções em Java

Tratando exceções em Java

terminar o programa; retornar um valor de erro indicando falha; retornar e ignorar o problema; chamar uma função para tratar o erro, etc...

Programação por Objectos. Java

Paradigmas da Programação PPROG. Linguagem JAVA. Exceções. (Livro Big Java, Late Objects Capítulo 7) Nelson Freire (ISEP DEI-PPROG 2015/16) 1/45

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Tratamento de Exceções. Profa. Thienne Johnson EACH/USP

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 26 de outubro de 12

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Vetores Unimensionais

01. [Sebesta, 2000] Defina exceção, manipulador de exceções, levantamento de uma exceção, desativação de uma exceção e exceção incorporada.

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Polimorfismo e Ligação Dinâmica. Alcides Pamplona Polimorfismo e Ligação Dinâmica

Java para Desktop. Programação Orientada à Objetos 2 JSE

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

Introdução. Extends e Super. Exercício Prático 5 Herança. Nome:

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Objetivos. Responder o que é Java; Mostrar as vantagens e desvantagens do Java; Compilar e executar um programa simples.

Programação Java (nível intermediário) 4. Polimorfismo

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Tipos de dados e comandos POO

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Transcrição:

JAVA Tópicos Especiais de Programação Orientada a Objetos 1

TRY CATCH 2

O que fazer quando algo inesperado acontece? 3

O que fazer quando algo inesperado acontece? Com JAVA podemos nos prevenir!!! 3

O que acontecerá quando um método que você quiser chamar (provavelmente de uma classe que não criou) for perigoso? 1 Suponhamos que você quisesse chamar um método de uma classe que não criou. escreve que usa métodos da você seu código classe que você não criou 4

O que acontecerá quando um método que você quiser chamar (provavelmente de uma classe que não criou) for perigoso? 2 Esse método faz algo arriscado, algo que pode não funcionar no tempo de execução. a classe que você não criou void moo() { if (serverdown) { explode(); 5

O que acontecerá quando um método que você quiser chamar (provavelmente de uma classe que não criou) for perigoso? 3 Você precisa saber se o método que está chamando é perigoso. Será que esse método pode travar? Meu método moo() será interrompido se o servidor travar. você 6 classe que você não criou

O que acontecerá quando um método que você quiser chamar (provavelmente de uma classe que não criou) for perigoso? 4 Em seguida, você escreverá um código que consiga manipular a falha, se ela realmente ocorrer. É preciso estar preparado, para o caso de acontecer. Agora que eu sei, posso tomar precauções. escreve com segurança você 7 seu código

Moral da história: Previna-se 8

Em Java os métodos usam exceções para informar Aconteceu algo errado. Falhei ao código que os chamou. O mecanismo de manipulação de exceções do Java é uma maneira simples e clara de lidar com as exceções que podem surgir no tempo de execução. Ele se baseia no fato de você saber que o método que está sendo chamado é perigoso, o que te permite criar um código que trate essa possibilidade. Mas como saber se um método lança uma exceção? 9

Em Java os métodos usam exceções para informar Aconteceu algo errado. Falhei ao código que os chamou. O mecanismo de manipulação de exceções do Java é uma maneira simples e clara de lidar com as exceções que podem surgir no tempo de execução. Ele se baseia no fato de você saber que o método que está sendo chamado é perigoso, o que te permite criar um código que trate essa possibilidade. Mas como saber se um método lança uma exceção? Através da cláusula throws na declaração do método. 9

10

Através de um bloco Try Catch é possível informar ao compilador que você estará tratando esta exceção. O compilador não se importará com a maneira como você manipulará; o importante é que você informe que está cuidando do problema. Sintaxe: try { //código a ser executado catch (Exceção) { //código de tratamento de erro finally { //código sempre executado 11

public class TratativaDeErros { TRATAMENTO DE ERROS public static void main(string[] args) { int[] array = {0, 1, 2, 3, 4, 5; for (int i=0; i<10; i++) { array[i] += i; System.out.println("array[" + i + "] = " + array[i]); System.out.println("Laço executado com sucesso."); 12

public class TratativaDeErros { public static void main(string[] args) { int[] array = {0, 1, 2, 3, 4, 5; try { for (int i=0; i<10; i++) { array[i] += i; System.out.println("array[" + i + "] = " + array[i]); System.out.println("Laço executado com sucesso."); catch (ArrayIndexOutOfBoundsException e) { System.out.println("Acessou um índice inexistente."); catch (Exception e) { System.out.println("Outro tipo de exceção."); finally { System.out.println("Isto SEMPRE executa."); 13

14

14

O que é uma exceção?!?!?! Uma exceção é um objeto... De tipo Exception. Throwable getmessage() printstracktrace() Exception Parte da hierarquia da classe Exception. Todas as classes estendem a classe Throwable e herdam dois métodos-chaves. IOException InterruptedException 15

Existem 3 diferentes tipos de erros: TRATAMENTO DE ERROS Erro de Runtime (java.lang.runtime) Erro de Sistema (java.lang.error) Erro Customizado (java.lang.exception) Os erros de Runtime são causados por bugs do programa, que desconhecemos, ou seja, uma condição especial que sequer havíamos imaginado. Os erros de Runtime são subclasses da classe Runtime, que é subclasse de Exception. Os erros de sistema são erros imprevisíveis, causados por falha do sistema, como acesso a disco, erro do banco de dados e etc. Estes erros são subclasses da classe Error. E os erros Customizados são erros ou condições especiais previstas no programa. Esses erros são subclasse da classe Exception. 16

Mas realmente como funciona o lançamento de uma exceção? 1 Código perigoso que lança uma exceção: Informa para todos o tipo de exceção que pode ser lançada. public void takerisk() throws BadException { if (abandonallhope) { throw new BadException(); Cria um novo objeto Exception e o lança. 17

2 Seu código que chama o método perigoso: public void crossfingers() { try { anobject.takerisk(); catch (BadException ex) { System.out.println( Ai não!!! ); ex.printstacktrace(); Se você não conseguir se recuperar da exceção, pelo menos execute um restreamento de pilha, usando o método printstacktrace() que todas as exceções herdam. 18

Um método pode lançar mais de um tipo de exceção, mas a delcaração de um método deve incluir todas as exceções verificadas que ele pode lançar. Porém se duas ou mais exceções tiverem a mesma superclasse, o método poderá declarar apenas a superclasse. public class Lavanderia { public void lavarroupas() throws CalcaException, LingerieException { //código public class Foo { public void go() { Lavanderia lavanderia = new Lavanderia(); try { lavanderia.lavarroupas(); catch (CalcaException cex) { //tratativa catch (LingerieException lex) { //tratativa 19

As exceções são Polimórficas. TRATAMENTO DE ERROS Exception IOException RoupaException CalcaException LingerieException CamisaException CamisetaException CamisaSocialException 20

As exceções são Polimórficas. Você pode declarar exceções usando um supertipo das exceções que lançar. public void lavarroupas() throws RoupaException { Você pode capturar exceções usando um supertipo da exceção lançada. try { lavanderia.lavarroupas(); catch (RoupaException rex) { //tratativa 21

Só porque você pode capturar tudo com um superbloco catch polimórfico, não quer dizer que sempre deva fazê-lo. try { lavanderia.lavarroupas(); catch (Exception ex) { //tratativa Esse bloco catch capturará QUALQUER exceção, portanto, você não saberá automaticamente o que deu errado. 22

Crie blocos diferentes para cada tipo de exceção que você tiver que manipular exclusivamente. try { lavanderia.lavarroupas(); catch (CamisetaException cex) { //tratativa de Camiseta Tratativas específicas catch (LingerieException lex) { //tratativa de Lingerie catch (RoupaException rex) { //tratativa das demais exceções Todas as outras exceções serão tratadas aqui. 23

Mas cuidado! Você não pode colocar cestas de roupas maiores em cima de cestas menores! try { lavanderia.lavarroupas(); catch (RoupaException rex) { //tratativa das demais exceções catch (LingerieException lex) { //tratativa de Lingerie catch (CamisetaException cex) { //tratativa de Camiseta O tamanho é importante quando temos vários blocos catch. O de cesta maior tem que ficar no final. Caso contrário, os de cestas menores serão inúteis. 24

E como eu faço para criar minha própria classe de exceção? 25

Através do uso do Polimorfismo, basta criar sua classe e estendê-la a partir da classe Exception. Repare que como a classe herda as características da classe Exception, onde há o construtor que recebe como parâmetro um valor em String contendo a mensagem do erro, representada pela variável, da superclasse msg. Isto serve para ser usada o método getmessage() da classe Exception. public class CalcaException extends Exception { public CalcaException() { super(); public CalcaException(String msg) { super( msg ); 26

Mas e se eu não quiser tratar o erro, o que eu faço? Deixe para que outra pessoa trate por você! Quando você não quiser manipular, você pode desviar-se dela. public class Foo { public void go() throws RoupaException { Lavanderia lavanderia = new Lavanderia(); lavanderia.lavarroupas(); Mas lembre-se: Desviar o erro apenas retarda o inevitável. 27

Mas e se eu não quiser tratar o erro, o que eu faço? Deixe para que outra pessoa trate por você! Quando você não quiser manipular, você pode desviar-se dela. public class Foo { public void go() throws RoupaException { Lavanderia lavanderia = new Lavanderia(); lavanderia.lavarroupas(); Mas lembre-se: Desviar o erro apenas retarda o inevitável. 27

BIBLIOGRAFIA Introdução ao Java, Daniel Destro do Carmo Use a Cabeça Java, Kathy Sierra e Bert Bates Certificação Sun para Programador Java 6, Kathy Sierra e Bert Bates 28

OBRIGADO PROF. EMILIO PARMEGIANI DOWNLOAD DO MATERIAL 29