Capítulo 6 Exceções.

Slides:



Advertisements
Apresentações semelhantes
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Advertisements

Programação em Java Prof. Maurício Braga
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Modificadores Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Prof. Alessandro J. de Souza
Tratamento de Exceções
Java Conexão com Banco de Dados
Excepções Algoritmos e Tipos Abstractos de Informação (ATAI)
(C) 2010 Pearson Education, Inc. Todos os direitos reservados. Java Como Programar, 8/E.
Persistência de objetos em arquivo texto usando Java
Linguagens de Programação Orientadas a Objetos
Classes Concretas e Abstratas
Exceptions em Java Leonardo Freitas e
Membros estáticos.
Capítulo 8 Construtores. 2 Capítulo 8 – Construtores Construtores Método Construtor Múltiplos métodos construtores Array de objetos.
Orientação a Objetos Classes
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Capítulo 9 Herança 1.
Excepções e Streams em Java
Estrutura de Dados em Java
Prof.: Bruno Rafael de Oliveira Rodrigues
Java & Bancos de Dados Universidade Salgado de Oliveira Goiânia
Gerenciamento de erros com Exceções em Java
Bruno Rafael de Oliveira Rodrigues. Tratadores de Excessões A exceção é uma indicação de que um erro ou problema aconteceu durante a execução de uma aplicação.
Python: Exceções, Iteradores e Geradores
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Linguagem de Programação II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Streams –input e output
Tecnologia para Web Tratamento de Exceções
Chamada Remota de Procedimentos
Desenvolvimento de Aplicações CORBA
Programação Orientada à Objetos
Os métodos equals() e hashCode()
Capítulo 6 Exceções.
Orientação a Objetos e Java Graduação em Ciência da Computação
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Pilhas Profa. Nádia Félix.
Prof. Roberto Rosa Aula 8.  A partir de agora vamos aprender como ver qual é o erro que está acontecendo em nosso projeto. Para.
Excepções Conceito de Excepção A classe Exception
Linguagem II Exceções.
Paradigmas da Programação – Semestre 1 – Aula 10 Professor: Eduardo Mantovani )
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
Tratamento de Exceções
Programação I Aula 3 (Entrada de Dados) Prof. Gilberto Irajá Müller Última atualização 11/3/2009.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Estrutura de Controle em JAVA
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Seminário: Manipulação de exceções em Java Fabiana Piesigilli Rodrigo Mendes Leme MAC Programação Orientada a Objetos.
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2.
Feapa Prof Osiel Marlon Disciplina: Engenharia de Software 2009 Curso: Sistemas de Informação.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Capítulo 15 – Tratamento de Exceções
(C) 2010 Pearson Education, Inc. Todos os direitos reservados. Java™ Como Programar, 8/E.
Tratamento de Exceções. Roteiro O que são exceções? Quando usar Capturando Exceções Exemplos.
“Nature provides exceptions to every rule.“ - Margaret Fuller 3 – Exceções.
Programação em Java Tratamento de Exceções Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel.
Transcrição da apresentação:

Capítulo 6 Exceções

Exceções Exceptions try / catch Hierarquia de Exceptions Exceções verificadas Transferindo exceções Cláusula throws Cláusula finally Principais métodos de exceções Principais exceções Cláusula throw Exceções personalizadas

Exceptions Mecanismo utilizado pelo Java para informar que algo inesperado aconteceu Quando sua aplicação não contorna situações de exceptions, ocorre a interrupção abrupta

try / catch try { // Instruções sujeitas // a falhas } catch (Exception e) { // Instruções a serem executadas // em caso de falha }

try / catch – Exemplo try { Conexao cn = abrirConexao(); cn.gravarRegistro(aluno1); } catch (Exception e) { System.out.println(“Erro ao gravar”); System.out.println(e.getMessage()); }

Hierarquia de Exceptions try { Conexao cn = abrirConexao(); Aluno aluno1 = cn.obterDados(); cn.gravarNoArquivo(aluno1); } catch (SQLException sqle) { System.out.println(“Erro ao acessar banco de dados”); } catch (IOException ioe) { System.out.println(“Erro ao gravar no arquivo”); } catch (Exception e) { System.out.println(“Erro inesperado”); }

Hierarquia de Exceptions Throwable Exception Error SQLException ParseException IOException RuntimeException ArithmeticException NullPointerException ArrayIndexOutOfBoundsException NumberFormatException

Exceções verificadas FileReader texto; ... texto = new FileReader(“C:\\arquivos\\carta.txt”); A instrução acima oferece risco de utilização (FileNotFoundException) e deve possuir tratamento de erro. Não é permitido sem Tratamento de erro

Exceções verificadas FileReader texto; ... try { texto = new FileReader(“C:\\arquivos\\carta.txt”); } catch (FileNotFoundException e) { System.out.println(“Arquivo não encontrado”); }

Exceções verificadas Throwable Exception Error SQLException ParseException IOException RuntimeException ArithmeticException NullPointerException ArrayIndexOutOfBoundsException NumberFormatException

Transferindo exceções Ao utilizar instruções que exigem o tratamento de exceptions, temos duas opções: Tratar a exception com try / catch, conforme já visto Transferir a exception para quem chamou o método atual através da cláusula throws

Transferindo exceções Cláusula throws void abrirArquivo() throws FileNotFountException { FileReader texto; ... texto = new FileReader(“C:\\arquivos\\carta.txt”); }

Cláusula finally Bloco de código associado ao try/catch que garante a execução de instruções mesmo quando não ocorre exceções Define um bloco de código que será executado 100% das vezes Geralmente utilizado para finalizar alguma pendência que o método deixou

Cláusula finally public double obterSaldo() throws IOException { Conexao cn = null; try { cn = abrirConexao(); Conta c1 = cn.obterConta(); double saldo = c1.getSaldo(); cn.gravarNoArquivo(saldo); return saldo; } catch (SQLException sqle) { System.out.println("Erro ao acessar BD"); } catch (RuntimeException e) { System.out.println("Erro inesperado"); } finally { fecharConexao(cn); }

Principais métodos de exceções getMessage() Retorna uma mensagem a respeito do problema que provocou a exception. try { ... } catch (Exception e) { System.out.println(“Ocorreu um problema: ” + e.getMessage()); }

Principais métodos de exceções printStackTrace() Exibe em console a pilha de chamadas de métodos desde o método main até o momento em que a exception ocorreu. try { ... } catch (Exception e) { e.printStackTrace(); }

Principais exceções java.lang.NullPointerException java.lang.NumberFormatException java.lang.ArrayIndexOutOfBoundsException java.lang.ArithmeticException java.lang.ClassCastException java.io.IOException java.sql.SQLException

Principais exceções NullPointerException Exceção não verificada pertencente ao pacote java.lang Ocorre ao tentar executar um método sobre uma variável que não possui um objeto referenciado Cliente c = null; c.setNome(“Manuel da silva”);

Principais exceções NumberFormatException Exceção não verificada pertencente ao pacote java.lang Ocorre ao tentar realizar a conversão de um String para um valor numérico String texto = “10xpt23”; int idade = Integer.parseInt(texto);

Principais exceções ArrayIndexOutOfBoundsException Exceção não verificada pertencente ao pacote java.lang Ocorre ao tentar obter um item inexistente em um array double[] salario = { 1200.5, 630.0, 950.15 }; double s = salario[3];

Principais exceções ArithmeticException Exceção não verificada pertencente ao pacote java.lang Ocorre em operações aritméticas com inteiros que possuem resultado inválido int valorTotal = 25; int quantidadePessoas = 0; int rateio = valorTotal / quantidadePessoas;

Principais exceções ClassCastException Exceção não verificada pertencente ao pacote java.lang Ocorre ao tentar realizar o cast (tipagem) para um tipo incompatível com o objeto Conta c = new ContaPoupanca(); ContaCorrente cc = (ContaCorrente) c;

Principais exceções IOException FileReader doc; Exceção verificada pertencente ao pacote java.io (será visto no capítulo 10) Ocorre em operações de input/output, como leitura de arquivos, comunicação por rede que não são realizados com sucesso. Possui diversas classes filhas que representam subtipos de problemas do gênero I/O FileReader doc; doc = new FileReader(“C:\\carta.txt”);

rs = st.executeUpdate(“SELECT nome, salario FROM tab_funcionario”); Principais exceções SQLException Exceção verificada pertencente ao pacote java.sql (será visto no capítulo 11) Ocorre ao tentar realizar operações de acesso a bancos de dados que resultam em problemas, tais como: Tentar acessar um banco de dados que não está no ar; Tentar conectar com usuário ou senha inválidos; Tentar acessar uma tabela inexistente. rs = st.executeUpdate(“SELECT nome, salario FROM tab_funcionario”);

Cláusula throw Força a ocorrência de uma exception sinalizando que há algum problema ao executar a operação em questão.

Cláusula throw Exemplo public void exibeParabens(int idade) throws Exception { if (idade >= 0) { System.out.println(“Parabens pelos seus ” + idade + “ anos de vida.”); } else { throw new Exception(“Idade inválida”); }

Cláusula throw Na aplicação principal... public void rotinaPrincial() { Conexao cn = null; try { cn = abrirConexao(); Cliente cli = cn.obterCliente(); int idade = cli.getIdade(); exibeParabens(idade); } catch (SQLException sqle) { System.out.println(“Erro ao acessar BD”); } catch (Exception e) { System.out.println(“Ocorreu um erro: ” + e.getMessage()); } finally { fecharConexao(cn); }

Exceções personalizadas Na maioria das ocasiões, ao implementar métodos que geram exceptions, é recomendável criar a sua própria exceção. Isto permite que a aplicação principal utilize blocos catch específicos para a exception em questão

Exceções personalizadas Exemplo public void debitar(double valor) throws SaldoInsuficienteException { if (valor <= this.saldo) { this.saldo -= valor; } else { throw new SaldoInsuficienteException( “Valor muito alto para debitar: ” + valor); } Esta classe precisa ser criada

Exceções personalizadas Criando a classe exceção public class SaldoInsuficienteException extends Exception { public SaldoInsuficienteException() { super(); } public SaldoInsuficienteException(String message) { super(message);

Exceções personalizadas Na aplicação principal... public void obterSaldo() { Conexao cn = null; try { cn = abrirConexao(); Conta conta = cn.obterConta(); conta.debitar(valorBoleto); } catch (SQLException sqle) { System.out.println(“Erro ao acessar BD”); } catch (SaldoInsuficienteException e) { System.out.println(“Ocorreu um erro: ” + e.getMessage()); } catch (Exception e) { System.out.println(“Ocorreu um erro desconhecido.”); } finally { fecharConexao(cn); }

Exercício 1 Crie uma classe executável ExercicioIdade que realize as seguintes operações: Através da classe Scanner, método nextLine() Solicite ao usuário que digite o ano de seu nascimento; Calcule e exiba sua idade assumindo que estamos no ano 2012; Caso ocorra algum problema na conversão do valor digitado pelo usuário, exiba a mensagem “Valor digitado inválido”. Utilize para isto o tratamento sobre a exception NumberFormatException.

Exercício 2 As linhas de código abaixo são utilizadas para gravar um texto dentro de um novo arquivo no sistema operacional: PrintWriter writer = new PrintWriter(“C:\\doc1.txt”); writer.println(texto); writer.close(); onde texto é uma variável String qualquer contendo algum texto.

Exercício 2 (Fim) Crie uma classe executável ExercicioGravacao que solicite que o usuário digite uma frase e grave-a em um arquivo conforme mostrado no slide anterior. Caso ocorra algum problema durante a gravação, exiba a mensagem “Falha ao gravar as informações digitadas”.