Wicker Man Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 Olá.Alguém poderia me explicar mais sobre o tratamento de excessões em Java?Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 dae cara,eu vou dar uma visao geral... mas eu aconcelho você a ler um tutorial sobre isso...você deve seguir essa sintese: try{ ... } catch (PrimeiraException erro){ ... } catch (SegundaException erro){ ... } finally{ ... } o programa vai comecar executando o bloco try, se o correr uma excecao, a execucao do bloco try é interrompida imediatamente, e o programa vai pro catch q corresponde a excecao q ocorreu, você pode botar quantos catch's você quiser, desde q haja pelo menos um, se não ouver um tratamento pra excecao q ocorreu, o programa causara um erro. o bloco finally é opcional, ele vai ser executado sempre, ocorrendo ou não uma execao.você pode criar suas proprimas classes pra tratamento de excecoes, basta criar uma classe e extender a Exception, dai no seu programa você poe ela no bloco catch, pra disparar uma excecao, basta usar o comando throw Exception, você pode obrigar todas as chamadas a um metodo em especifico a estarem em um problo try-catch usando o o comando throws, ex:public int divide(int x, int y) throws Exception{ if (y == 0) throw new Exception("Divisao por zero"); return x / y;}public static void main(String args[]){ try{ divide(4, 0); } catch (Exception erro){ System.out.println(erro); } finally{ System.out.println("Finally sempre é executado!"); }}qualquer duvida é só mandar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Maio 9, 2004 Autor Denunciar Share Postado Maio 9, 2004 Valeu.E quanto ao nome da classe que se usa para tratar a exceção? Tipo, você usou "Exception" mas eu já vi exceções como "ClassNotFoundException", então, quando usar determinada exceção, ou melhor, como vou saber quando e qual exceção usar? Deu pra entender? Espero que sim.Muito obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kabelera Postado Maio 10, 2004 Denunciar Share Postado Maio 10, 2004 Valeu.E quanto ao nome da classe que se usa para tratar a exceção? Tipo, você usou "Exception" mas eu já vi exceções como "ClassNotFoundException", então, quando usar determinada exceção, ou melhor, como vou saber quando e qual exceção usar? Deu pra entender? Espero que sim.Muito obrigado. A sim , você pode usar as exeções que já existem....se você tiver trabalhando com sql você pode usar SQLException, se tiver trabalhando com fluxo de arquivos pode usar IOException e por ai vai...Olhe na documentação para ver todas que tem , e em que caso usar.Mas tem os "genériocos" ques ervem para quase tudoex:catch(ex.getMessage());oucatch(ex.getCouse());Mas quando tiver fazendo seu programa para ver que erro ta dando use essas exeções.Mas veja bem que para o usuário não intereça olhar o erro e ver detalhes técnicos que el não entende só o programador.Ae o ideal é porceder como foi dito acima pleo fbafelipe, fazer suas classes de exception...O usuario digita uma string quando é para ser numero e veerro:number exception....etcectectectou você cria sua classe e escreve:Digite apenas número esse campo não suporta letras.....Por ai Valeu!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Maio 11, 2004 Denunciar Share Postado Maio 11, 2004 Valeu.E quanto ao nome da classe que se usa para tratar a exceção? Tipo, você usou "Exception" mas eu já vi exceções como "ClassNotFoundException", então, quando usar determinada exceção, ou melhor, como vou saber quando e qual exceção usar? Deu pra entender? Espero que sim.Muito obrigado. sim, por isso q aconcelhei você a ler alguma coisa mais avancada sobre isso eu vou tentar explicar +-:essas classes como ClassNotFoundException, IOException, etc... extendem a Exception, dai no seu prog, se for disparada uma excecao expecifica, você pode trata-la, isso é bem util pra tratar de forma mais expecifica cada tipo de excecao, você pode criar suas proprias excecoes, basta criar a classe e extendela a exception (por o nome terminando com Exception como em MeuErroException, é opcional, porem é aconcelhado), EX: public class DivisaoPorZeroException extends Exception{ public DivisaoPorZero(){ super("Divisao por zero"); } public DivisaoPorZero(String msg){ super(msg); } } public int divide(){ int x, y; try{ x = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero a ser dividido")); y = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o divisor")); if (y == 0) throw new DivisaoPorZeroException(); return x / y; } catch (DivisaoPorZeroException erro){ System.out.println(erro); return 0; } catch (Exception erro){ System.out.println("Digite apenas numeros"); return -1; } } nesse exemplo, se ocorrer uma divisao por zero, sera passada a mensagem "Divisao por zero", e em seguida o metodo retornara 0, como desta vez estamos lendo dados digitados pelo usuario, nada impede q ele digite letras, ou seja, um numero invalido, caso isso ocorra, sera gerada uma NumberFormatException, lembre-se q NumberFormatException extende a Exception, portanto o catch q recebe Exception tratara a NumberFormatException, é aconcelhavel sempre por tratamento de excecoes o mais espacifico possivel, e como todas as Excecoes extendem a Exception, é tb aconcelhavel q se ponha um catch capturando Exception no final...quando uma excecao é disparada, o programa verifica os catchs ateh encontrar um catch q trate a excecao disparada, se o programa não encontrar um catch pra excecao ocorrida, entaum ele usara o tratador default de excecoes (exatamente o q ocorreria se não houvesse um try-catch), vale lembrar q se colocacemos o catch de Exception antes de DivisaoPorZeroException, o DivisaoPorZeroException jamais seria executado, pois sempre q ocorrece uma excecao o programa comecaria verificando o catch de Exception q pode tratar todas as excecoes (inclusive a DivisaoPorZeroException, já q DivisaoPorZeroException é uma Exception), na verdade, nem iria compilar se botacemos Exception antes de DivisaoPorZeroException...qualquer duvida é só postar Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Wicker Man
Olá.
Alguém poderia me explicar mais sobre o tratamento de excessões em Java?
Obrigado.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.