Tenho um try/catch e no caso ele use a exception ele tem dar tipo um Stop e parar de rodar o bloco de intruções, no meu caso fiz o seguinte, um método para cadastrar os itens do JTable no banco de dados, caso ele não consiga ele joga uma mensagem alertando o usuário, mas dae no método que chama ele, continua a executar o bloco, dae aparece outra mensagem perguntando se ele quer cadastrar outros itens!!! Então não sei se fui bem claro mas vou simplificar, quero que na hora que ele passe pelo catch…
Vc pode usar o System.exit(0); depois da chamada da JOptionPane, mas ai ele irá terminar a execução do sistema, se isso nao for problema, pode usar na boa
Rafael_Steil
Dê um “return” para acabar com a execucao do metodo:
Logicaente, se o tipo de retorno nao for void, vc tem que retornar um null, por exemplo.
Uma outra opcao seria ter uma variavel de controle booleana, como “hasErrors”, e usar ela para decidir se continua a executar o codigo ou nao.
Rafael
C
chicobento
Cara, não dá pra fazer algo assim:
try{dao.insereNoBanco(sorteios);JOptionPane.showMessageDialog(this,"Voce deseja cadastrar mais um sorteio ? ");}catch(SQLExceptione){JOptionPane.showMessageDialog(this,"Não foi possível cadastrar esses sorteios!!!");}
danieldestro
Que tal um simples return; ???
Java_Vinicius_Machin
Se eu entendi bem vc quer sair do método sem executar o que esta após o try/catch neh ?! Então um return; (se o método tiver como tipo de retorno void basta) .
Lembrando que mesmo dando um return; o finally será executado, se houver um bloco finally claro! :lol:
Rafael_Steil
O codigo que eu postei eh com return ja
Rafael
Pilantra
Eitaaa, quantos posts hehe!! Valeu gente, eu vou usar o return, o método é void então é simples return né!? se fosse um método boolean dae seria return false!? Interessante isso, chegando em casa vou testar!!
Obrigado
Pilantra
Hei povo, não deu certo ele ainda continuou o método!!! e se eu criasse o método public boolean insereBanco() e jogasse um return false será que mudaria alguma coisa?! Eu ainda não sei muito bem quando usar os public String coisa() public boolean coisa()!!!
danieldestro
O código do Rafael funciona. Senão você fez alguma cagada aí.
Pilantra
Bom eu fiz exatamente igual o dele!! Deixa eu explicar um pouco mais!!!
Existem dois métodos, o insereTabela() e o insereBanco(), o insere banco é essa que eu uso o catch pra avisar que não foi possivel cadastrar, o insereTabela vai inserindo no JTable até dar 5 linhas e na 5 ele cadastra(Chamando o método insereBanco()) e pergunta se desejo cadastrar novo sorteio!! Então era isso que eu queria, porque quando dá o erro de inserção, ele ainda continua o bloco, jogando a menssagem se eu quero inserir um novo sorteio, era isso que eu queria evitar!!! Simplificando, o método insereTabela() evoca o insereBanco() caso as linhas sejam == 5!!!
Será que o problema do return seja isso!?
danieldestro
Põe o código aqui… já é tarde e eu não consigo mais mentalizá-lo.
V
Vegetto
Estude o básico primeiro, então… sem saber isso é praticamente impossível fazer algo(que use exception, por exemplo) e entender o que está acontecendo
Pilantra
publicvoidinsereTabela(){Stringtxt1=txtData.getText(),txt2=txtNum.getText(),txt3=(String)cboHora.getSelectedItem();intnumTabela=tabela.getRowCount();if(numTabela==1&&resposta==false){tabela.removeRow(0);tabela.addRow(newString[]{txt1,txt2,txt3});resposta=true;}elseif(numTabela>=5&&resposta==true){if((String)cboHora.getSelectedItem()=="14:00"){insereBanco();intn=JOptionPane.showConfirmDialog(this,"Este foi o primeiro sorteio do dia?\nDeseja cadastrar o sorteio das 18:00!?","",JOptionPane.YES_NO_OPTION);if(n==JOptionPane.YES_OPTION){cboHora.setSelectedIndex(1);txtNum.requestFocus();limpaTable();}}}else{tabela.addRow(newString[]{txt1,txt2,txt3});}}publicvoidinsereBanco(){StringvalorHora=(String)cboHora.getSelectedItem();Stringtxt=txtData.getText();Stringrow1,row2,row3;intcod;if(valorHora=="14:00"){try{stm=conn.createStatement();rs=stm.executeQuery("SELECT * FROM horario1");rs.last();Stringcodigo=rs.getString("cod");cod=Integer.parseInt(codigo);if(cod==0){cod=1;}else{cod++;}for(inti=0;i<5;i++){row1=(String)tabela.getValueAt(i,0);row2=(String)tabela.getValueAt(i,1);row3=(String)tabela.getValueAt(i,2);intrs2=stm.executeUpdate("INSERT INTO horario1 VALUES("+cod+", '"+row1+"','"+row2+"','"+row3+"')");}}catch(SQLExceptione){JOptionPane.showMessageDialog(this,"Não foi possível cadastrar esses sorteios!!!");}}else{try{stm=conn.createStatement();rs=stm.executeQuery("SELECT * FROM horario2");rs.last();Stringcodigo=rs.getString("cod");cod=Integer.parseInt(codigo);if(cod==0){cod=1;}else{cod++;}for(inti=0;i<5;i++){row1=(String)tabela.getValueAt(i,0);row2=(String)tabela.getValueAt(i,1);row3=(String)tabela.getValueAt(i,2);intrs2=stm.executeUpdate("INSERT INTO horario2 VALUES("+cod+", '"+row1+"','"+row2+"','"+row3+"')");}}catch(SQLExceptione){JOptionPane.showMessageDialog(this,"Não foi possível cadastrar esses sorteios!!!");}}}
Pilantra
Gente só um detalhe, raramente o catch vai ser acionado, ou talvez nunca vai ser acionado, a não ser que de algum problema no BD, mas por questão da coisa ficar mais profissional, que caso de um problema ele já pare por ali, sem continuar nada!!!
danieldestro
Nesse caso ou vc retorna um boolean, por exemplo, onde false indica falha ou lança uma exceção, onde o método externo deve saber como tratar.
keller
basta um return; para ele sair do metodo já que ele é void… beleza? até…
Pilantra
Gozado não parou, mas enfim, desisto, dexa quieto
Obrigado a todos
Flw
danieldestro
Cagada sua, pode apostar! haahahahahhaha 8)
Rafael_Steil
De fato. Um return finaliza a execucao do metodo, sem choro.
Rafael
Java_Vinicius_Machin
Puts…bom então desencana e estuda o capitulo sobre exceptions do Deitel vai ajudar!