A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo 6 Exceções.

Apresentações semelhantes


Apresentação em tema: "Capítulo 6 Exceções."— Transcrição da apresentação:

1 Capítulo 6 Exceções

2 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

3 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

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

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

6 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”); }

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

8 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

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

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

11 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

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

13 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

14 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); }

15 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()); }

16 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(); }

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

18 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”);

19 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);

20 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 = { , 630.0, }; double s = salario[3];

21 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;

22 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;

23 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”);

24 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”);

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

26 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”); }

27 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); }

28 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

29 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

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

31 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); }

32 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.

33 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.

34 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”.


Carregar ppt "Capítulo 6 Exceções."

Apresentações semelhantes


Anúncios Google