Ir para conteúdo
Fórum Script Brasil
  • 0

Excessões


Wicker Man

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

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 wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • 0
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 tudo

ex:

catch(ex.getMessage());

ou

catch(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 ve

erro:number exception....etcectectect

ou você cria sua classe e escreve:

Digite apenas número esse campo não suporta letras.....

Por ai Valeu!!

Link para o comentário
Compartilhar em outros sites

  • 0
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 wink.gif

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 wink.gif

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...