[quote=stark][quote]A excessão vai subindo na pilha de chamadas até ser tratada, se passar do método main e ninguém a tratar, acho que o programa é encerrado.
Mas não é raro você ver em alguma parte do código de alguém sem noção algo do tipo:
view plaincopy to clipboardprint?
try{ ...
}catch(Exception e){} //Isso mesmo, não faz nada !!!!!!!!!!
Isso pode fazer com que o programa continue a execução de forma instável já que ocorreu um erro e este não foi tratado corretamente![/quote]
Certo. Mas se o cara não fizer esse tratamento de erro sem noção, vai encerrar a thread ou o main?
[]´s[/quote]
O programa ignora o erro e toca a bola para frente, sem logar nada. Por isso é um tratamento “sem noção”.
[quote=ViniGodoy][quote=stark][quote]A excessão vai subindo na pilha de chamadas até ser tratada, se passar do método main e ninguém a tratar, acho que o programa é encerrado.
Mas não é raro você ver em alguma parte do código de alguém sem noção algo do tipo:
view plaincopy to clipboardprint?
try{ ...
}catch(Exception e){} //Isso mesmo, não faz nada !!!!!!!!!!
Isso pode fazer com que o programa continue a execução de forma instável já que ocorreu um erro e este não foi tratado corretamente![/quote]
Certo. Mas se o cara não fizer esse tratamento de erro sem noção, vai encerrar a thread ou o main?
[]´s[/quote]
O programa ignora o erro e toca a bola para frente, sem logar nada. Por isso é um tratamento “sem noção”.[/quote]
}catch(Exception e){}: Sem noção pq ele captura a exceção e não faz nada, aí continua executando instavelmente.
Mas se ele [color=red]não [/color]tratar com try-catch, a thread se encerra por ali?
[quote=stark]}catch(Exception e){}: Sem noção pq ele captura a exceção e não faz nada, aí continua executando instavelmente.
Mas se ele [color=red]não [/color]tratar com try-catch, a thread se encerra por ali?
[]´s[/quote]
Não. Ela vai para o método que chamou quem disparou a exception. Se ele não tratar, ela vai para o método que chamou o método, que disparou a exception. E se ninguém tratar, ela vai subindo, subindo, subindo até uma hora que chega no main, ou no run().
Se sair do método onde a thread começou, ela segue o ciclo do diagrama que postei, e então é encerrada.
você passa a exceção quando deseja tratá-la num escopo superior
tipo, tem um método A que chama um método B que lança uma exceção
você pode tratá-la no método B mesmo ou jogar pra fora
daí você vai ter que tratar no método A (se ela for obrigatória, senão você pode deixar passar…)
[quote]Checked exceptions quando o erro é tratável e você quer passar isso para quem chamou o método.
Unchecked exceptions quando o erro não é tratável e você quer encerrar o programa ali.[/quote]
Na verdade ambos são tratáveis: ambos podem ser tratados ou lançados
a diferença entre eles é que o tratamento de um unchecked exception é opcional
enquanto o tratamento (ou lançamento para posterior tratamento) é obrigatório
se você não trata de alguma forma uma checked exception o programa não compila
ambas podem ser tratadas, há quem prefira tratar tudo que é exceção possível, há quem trate apenas as obrigatórias (e verifique as opcionais de outra forma)
uma unchecked exception é resultado de um erro de programação ou sacanagem do usuário
(você pede pra ele digitar um número e ele entra com um texto)
uma checked exception é um erro que aconteceu fora do escopo do programa
(o usuário apagou um arquivo e o programa não consegue encontrá-lo por exemplo)
[quote=ViniGodoy][quote=stark]}catch(Exception e){}: Sem noção pq ele captura a exceção e não faz nada, aí continua executando instavelmente.
Mas se ele [color=red]não [/color]tratar com try-catch, a thread se encerra por ali?
[]´s[/quote]
Não. Ela vai para o método que chamou quem disparou a exception. Se ele não tratar, ela vai para o método que chamou o método, que disparou a exception. E se ninguém tratar, ela vai subindo, subindo, subindo até uma hora que chega no main, ou no run().
Se sair do método onde a thread começou, ela segue o ciclo do diagrama que postei, e então é encerrada.[/quote]
Vini: A primeira parte está perfeita, entendi.
Vou continuar estudando e tentar entender sobre thread, aí sim eu volto depois pra entender a segunda!
Muito obrigado pela ajuda, vou renomear o tópico como [RESOLVIDO]. Temos material suficiente aqui pra entender boa parte de exception.
você passa a exceção quando deseja tratá-la num escopo superior
tipo, tem um método A que chama um método B que lança uma exceção
você pode tratá-la no método B mesmo ou jogar pra fora
daí você vai ter que tratar no método A (se ela for obrigatória, senão você pode deixar passar…)
[quote]Checked exceptions quando o erro é tratável e você quer passar isso para quem chamou o método.
Unchecked exceptions quando o erro não é tratável e você quer encerrar o programa ali.[/quote]
Na verdade ambos são tratáveis: ambos podem ser tratados ou lançados
a diferença entre eles é que o tratamento de um unchecked exception é opcional
enquanto o tratamento (ou lançamento para posterior tratamento) é obrigatório
se você não trata de alguma forma uma checked exception o programa não compila
ambas podem ser tratadas, há quem prefira tratar tudo que é exceção possível, há quem trate apenas as obrigatórias (e verifique as opcionais de outra forma)
uma unchecked exception é resultado de um erro de programação ou sacanagem do usuário
(você pede pra ele digitar um número e ele entra com um texto)
uma checked exception é um erro que aconteceu fora do escopo do programa
(o usuário apagou um arquivo e o programa não consegue encontrá-lo por exemplo)
[/quote]
Alfredo Barbosa: Agora sim estou com as dúvidas esclarecidas! Só falta entender aquela parte de thread, mas já é assuntou pra outro tópico.
Tenho esse try, queria saber como que faço pra tratar um eventual erro, usando a Exception, mas quando houver esse erro o cursor voltar para codAlunofield(jtextField) pra o usuario digite novamente!! Alguem pode me ajudar???
try {
queryAluno = entityManager.createNamedQuery(“Aluno.findByCodaluno”);
queryAluno.setParameter(“codaluno”, Integer.parseInt(codAlunofield.getText()));
listAluno = queryAluno.getResultList();
nomeAlunoField.setText(listAluno.get(0).getNome());
cpfAlunoField.setText(listAluno.get(0).getCpf());
} catch ( Exception e) {
JOptionPane.showMessageDialog(null, “Ocorreu um erro, use apenas numeros!”);
e.printStackTrace();
codAlunofield.requestFocus();