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

Documentos relacionados
Exceções. Criando suas exceções

Tratamento de Exceções

Programação de Computadores II TCC /Turma A 1

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

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

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Tratamento de Exceções. Prof. Marcelo Roberto Zorzan

Programação de Computadores II

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos

Controlando Erros com Exceções

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Java para Desktop. Exceções JSE

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

Tratamento de Exceções

Programação Java. Tratamento de Exceções

O tratamento de erros em Java

TRATAMENTO DE EXCEÇÕES

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc.

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

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

Aula 13 Tratamento de Exceções. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

22/9/16. Agenda. Erros. Erros. Exceções. Mecanismo de exceções

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

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Tratamento de Exceções em Java

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

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

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

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

Tratamento de Exceções

Tratamento de Exceções. Julio Cesar Nardi

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

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Aula 13 POO 1 Tratamento de Exceções no Java. Profa. Elaine Faria UFU

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

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

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

Mecanismo de exceções em Java

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

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

Notas de Aula 09: Tratamento de exceções

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Introdução à Tecnologia Java 02/2012. Java Aula 06. Banco de Dados Exemplo com JTable 19/09/2012. Celso Olivete Júnior.

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

Programação Orientada a Objetos (DPADF 0063)

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

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Java Standard Edition (JSE)

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

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

Programação Orientada a Objetos II

Programação Orientada a Objetos

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

Prof. A. G. Silva. 13 de novembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de novembro de / 1

Programação Java. - Classes, Objetos, Atributos e Métodos - Marco Fagundes Marco Fagundes -

Linguagens de Programação Conceitos e Técnicas. Exceções

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

Simulado de Linguagem de Programação Java

APIs Java: Tratamento de exceções e Coleções

Capítulo 10. Tratamento de Exceções. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação OO em Java

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Tipos de dados e comandos POO

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Tratando exceções em 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


Herança (parte 2) Redefinição de métodos AULA 11

Strings e Arrays POO

Tratamento de Exceções

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

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

Escreva em Java a classe NumeroComplexo que represente um número complexo. A classe deverá ter os seguintes construtores:

Exceções e controle de erros

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

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

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Classe. Objeto é uma instância de uma classe. Classe é onde conceituamos o objeto É a essência do objeto Define os atributos e métodos

Linguagem de Programação II Implementação

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

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

Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Programação Orientada por Objectos 2007/2008

Atribuições: Valores, Ponteiros e Referências

Transcrição:

Exceções Profa. Patrícia A. Jaques Slides alterados por Leandro Tonietto Mar-12

Tratamento de Exceções O tratamento de exceções em Java permite o gerenciamento de erros em tempo de execução. Uma exceção em Java é um objeto que descreve uma condição de exceção que ocorreu em algum fragmento de código. Quando surge uma condição excepcional, um objeto Exception é criado e lançado no método que causa a exceção. Laboratório II profa. Patrícia A. Jaques 2

Classificação de tipos de Exceções Throwable Error Exception IOException RuntimeException Laboratório II profa. Patrícia A. Jaques 3

Classificação de tipos de Exceções erros internos e exaustão de recursos dentro do Java Runtime. Por ex., estouro de memória Throwable Error Exception IOException RuntimeException Laboratório II profa. Patrícia A. Jaques 3

Classificação de tipos de Exceções erros internos e exaustão de recursos dentro do Java Runtime. Por ex., estouro de memória Throwable Error Exception -Um casting mau feito; -Acesso a uma posição não existente de um array; -Acesso a um ponteiro null. IOException RuntimeException Laboratório II profa. Patrícia A. Jaques 3

Classificação de tipos de Exceções erros internos e exaustão de recursos dentro do Java Runtime. Por ex., estouro de memória Throwable Error Exception -Um casting mau feito; -Acesso a uma posição não existente de um array; -Acesso a um ponteiro null. Tentar ler além do final de um arquivo; Tentar abrir uma URL mal construída IOException RuntimeException Laboratório II profa. Patrícia A. Jaques 3

Exemplo class ExcecaoDivisaoPorZero { public static void main (String args []){ int d=0; int a=42/d; System.out.println ("Execução continua."); Laboratório II profa. Patrícia A. Jaques 4

Exemplo class ExcecaoDivisaoPorZero { public static void main (String args []){ int d=0; int a=42/d; System.out.println ("Execução continua."); Laboratório II profa. Patrícia A. Jaques 4

Exemplo class ExcecaoDivisaoPorZero { public static void main (String args []){ int d=0; int a=42/d; System.out.println ("Execução continua."); O programa pára a execução e é chamado o manipulador de exceção padrão que mostra o tipo de exceção, método em que ela aconteceu, nome o arquivo e linha. Laboratório II profa. Patrícia A. Jaques 4

class ExcecaoDivisaoPorZero { public static void main (String args []) { try{ int d=0; int a=42/d; System.out.println ("Dentro do bloco da exceção."); catch (ArithmeticException e) { try e catch System.out.println ("Aconteceu divisão por zero."); System.out.println ("Execução continua."); Laboratório II profa. Patrícia A. Jaques 5

class ExcecaoDivisaoPorZero { public static void main (String args []) { try{ int d=0; int a=42/d; System.out.println ("Dentro do bloco da exceção."); catch (ArithmeticException e) { try e catch System.out.println ("Aconteceu divisão por zero."); System.out.println ("Execução continua."); Laboratório II profa. Patrícia A. Jaques 5

Várias Cláusulas Catch class MultiCatch { public static void main (String args [ ]) { try{ int a = args.length; System.out.println ("a = "+a); int b = 42/a; int c [ ] = {1; c[42] = 99; catch (ArithmeticException e) { System.out.println ("Div por 0: "+e); catch (ArrayIndexOutOfBoundsException e) { System.out.println ("Estouro indice array: "+e); System.out.println ("Execução continua."); Laboratório II profa. Patrícia A. Jaques 6

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Separa o tratamento de erros do fluxo normal de execução Laboratório II profa. Patrícia A. Jaques 7

Vantagem do Uso de Exceções Propagação de erros entre chamadas de métodos Laboratório II profa. Patrícia A. Jaques 8

Vantagem do Uso de Exceções Propagação de erros entre chamadas de métodos Laboratório II profa. Patrícia A. Jaques 8

Vantagem do Uso de Exceções Propagação de erros entre chamadas de métodos Laboratório II profa. Patrícia A. Jaques 8

Vantagem do Uso de Exceções Propagação de erros entre chamadas de métodos Laboratório II profa. Patrícia A. Jaques 8

Checked Exceptions Tipos de Exceções Representam condições inválidas. Entrada inválida Problema na rede Permissão para acessar arquivos Acesso a banco de dados Unchecked Exceptions Representam defeitos (bugs) no programa. Representam condições, que de maneira geral, refletem erros na lógica do programa. Erros que geralmente não podem ser corrigidos em tempo de execução Laboratório II profa. Patrícia A. Jaques 9

Exercicio Passe para a máquina virtual java um argumento que seja lido pelo método main: java ExercicioExcecao 5 Converta o argumento para inteiro usando: int i = Integer.parseInt (args[0]) Trate as exceções: NumberFormatException ArrayIndexOutOfBoundsException Teste para as três situações seguintes: java ExercicioExcecao 5 java ExercicioExcecao java ExercicioExcecao ola Laboratório II profa. Patrícia A. Jaques 10

Criando a minha classe de exceções class MinhaExcecao extends Exception { private int detalhe; public MinhaExcecao(int a) { detalhe = a; public String tostring() { return "MinhaExcecao [" + detalhe + "]"; // da class MinhaExcecao Laboratório II profa. Patrícia A. Jaques 11

Usando throw para lançar exceções class DemoExcecao { public static void main(string args[]) { try { int a = 11; if (a > 10) { MinhaExcecao minhaexc = new MinhaExcecao(a); throw minhaexc; catch (MinhaExcecao e) { System.out.println("Excecao capturada: " + e); // da class DemoExcecao Laboratório II profa. Patrícia A. Jaques 12

throws class DemoThrows{ public static void proced() throws MinhaExcecao{ System.out.println ("No Procedimento."); throw new MinhaExcecao(1); public static void main (String args []) { try { proced(); catch (MinhaExcecao e) { System.out.println("Aconteceu exceção do"+ "tipo MinhaExcecao."); Laboratório II profa. Patrícia A. Jaques 13

throws class DemoThrows{ public static void proced() throws MinhaExcecao{ System.out.println ("No Procedimento."); throw new MinhaExcecao(1); public static void main (String args []) { try { proced(); catch (MinhaExcecao e) { System.out.println("Aconteceu exceção do"+ "tipo MinhaExcecao."); Situações aonde não é possível tratar a exceção naquele momento e, portanto, deve-se propagála para ser tratada num método mais adequado, um dos métodos antecessores. Laboratório II profa. Patrícia A. Jaques 13

Criando a minha classe de exceções Laboratório II profa. Patrícia A. Jaques 14

Criando a minha classe de exceções class TemperatureException extends Exception { public String tostring() { return "Tem algum problema com a temperatura!"; class TooColdException extends TemperatureException { public String tostring() { return "A temperatura está gelada demais!"; class TooHotException extends TemperatureException { public String tostring() { return "A temperatura está quente demais!"; Laboratório II profa. Patrícia A. Jaques 15

Gerando exceções class VirtualPerson { private static final int toocold = 65; private static final int toohot = 85; public void drinkcoffee(coffeecup cup) throws TooColdExceptio,TooHotException { int temperature = cup.gettemperature(); if (temperature <= toocold) { throw new TooColdException(); else if (temperature >= toohot) { throw new TooHotException(); //... //... class CoffeeCup { private int temperature = 75; public void settemperature(int val) { temperature = val; public int gettemperature() { return temperature; //... Laboratório II profa. Patrícia A. Jaques 16

class Excecao2 { public static void main(string[] args) { int temperature = 0; if (args.length > 0) { try { temperature = Integer.parseInt(args[0]); catch(numberformatexception e) { System.out.println( "Tem que passar um inteiro como argumento."); return; else { System.out.println( "Tem que passar uma temperatura."); return; // continua... Laboratório II profa. Patrícia A. Jaques 17

// Criando copo de café CoffeeCup cup = new CoffeeCup(); cup.settemperature(temperature); // cria um cliente VirtualPerson cust = new VirtualPerson(); try { // cliente bebe café cust.drinkcoffee(cup); System.out.println("Coffee is just right."); catch (TooColdException e) { System.out.println("Coffee is too cold."); //lidar com cliente muito bravo! :-) catch (TooHotException e) { System.out.println("Coffee is too hot."); //lidar com cliente muito bravo! :-) Laboratório II profa. Patrícia A. Jaques 18

Exercício 1. Implemente uma classe ContaBancaria. Esta classe deve ter como atributo interno a informação sobre o saldo do ContaBancaria (considere um valor double), o nome do proprietário da conta e um limite de crédito. 2. Implemente, além dos necessários métodos construtores, um método Depositar, um método Sacar, um método para informar o saldo atual e demais métodos necessários. Garanta, utilizando mecanismo de exceção, que não será depositado um valor negativo n a c o n t a p a r a d e p ó s i t o, u t i l i z a n d o a e x c e ç ã o IllegalArgumentException. Já para o método sacar, garanta que não seja retirado um valor além do limite da conta com EstouroDeLimiteException e, também, que não seja informado um saque negativo, utilizando a IllegalArgumentException. 3. Crie um classe principal (Sistema) e no main crie um objeto da classe ContaBancaria solicite ao usuário o nome do correntista e qual será o seu limite. 4. Depois, enquanto o usuário desejar, solicite qual operação ele deseja realizar (depósito, saque, saldo ou sair). Realize o tratamento de exceções correspondente a cada operação realizada. Laboratório II profa. Patrícia A. Jaques 19

Exercício (continuação) Laboratório II profa. Patrícia A. Jaques 20

Exercício 2 Continuando o exercício anterior, crie a classe ListaContaBancaria, que deve manter uma lista de contas bancárias. Para tanto, a classe fornece métodos para incluir, excluir e obter uma conta bancária da lista. Esta classe pode gerar a exceção OverflowException, quando o usuário deseja incluir uma conta e a lista já está no máximo de registros. UnderflowException, quando o usuário tentar remover um registro e a lista está vazia. Por fim, pode gerar NotFoundException, quando o usuário tentar buscar uma conta que não existe. Altere a classe Sistema para permitir o cadastramento de diversas contas (incluir, alterar, excluir e consultar dados da conta). Por fim, antes de realizar cada operação, deve-se informar de qual conta bancária está se querendo depositar, sacar ou ver saldo. Laboratório II profa. Patrícia A. Jaques 21

Exercício 2 Laboratório II profa. Patrícia A. Jaques 22

finally class DemoFinally { static void proca() throws Exception { try { System.out.println("dentro de proca"); throw new Exception("demo"); finally { System.out.println("finally de proca"); static void procb() { try { System.out.println("dentro de procb"); return; finally { System.out.println("finally de procb"); public static void main(string args[]) { try { proca(); catch (Exception e) { System.out.println("Tratando excecao que ocorreu no método proca"); procb(); // da class Laboratório II profa. Patrícia A. Jaques 23

Utilizando printstacktrace Método herdado da Classe Throwable Imprime lista de chamada de métodos 1 class UsandoprintStackTrace { 2 public static void main(string args[]) { 3 try{ 4 metodo1(); 5 6 catch (Exception e) { 7 System.out.println("Erro:" + e); 8 e.printstacktrace(); 9 10 11 public static void metodo1() throws Exception { 12 metodo2(); 13 14 public static void metodo2() throws Exception { 15 metodo3(); 16 17 public static void metodo3() throws Exception { 18 throw new Exception(); 19 20 Laboratório II profa. Patrícia A. Jaques 21

Utilizando printstacktrace Método herdado da Classe Throwable Imprime lista de chamada de métodos 1 class UsandoprintStackTrace { 2 public static void main(string args[]) { 3 try{ 4 metodo1(); 5 6 catch (Exception e) { 7 System.out.println("Erro:" + e); 8 e.printstacktrace(); 9 10 11 public static void metodo1() throws Exception { 12 metodo2(); 13 14 public static void metodo2() throws Exception { 15 metodo3(); 16 17 public static void metodo3() throws Exception { 18 throw new Exception(); 19 20 Laboratório II profa. Patrícia A. Jaques 21

Exercício 1. Crie uma classe ReadData para fazer leitura de dados formatados. Esta classe possui métodos estáticos para leitura. Um método para cada tipo de dado. Exemplo: readint, readdouble, readstring, readfloat,... 2. O comportamento padrão de cada método é: lê uma string com JOptionPane se o usuário clicou em Cancelar, pare a leitura e retorne null. se o usuário digitou um dado que não pode ser convertido para o tipo específico, continue refaça a leitura 3. Imprima mensagem adequado ao usuário utilizando método showmessagedialog da classe JOptionPane. Laboratório II profa. Patrícia A. Jaques 25

Para saber mais: http://www.javaworld.com/javaworld/jw-07-1998/ jw-07-exceptions.html?page=2 http://java.sun.com/docs/books/tutorial/essential/ exceptions/definition.html Laboratório II profa. Patrícia A. Jaques 26