Ola pessoal, o Try se usa assim
try {
bloco de comandos;
} catch (excessao objeto) {
tratamento de erro;
}
dentro do Try eu coloco o bloco de comandos que pode dar uma excessão, e caso houver a excessão vai para o catch correspondendo dentro da Exception e faz o tratamento da execessão.
agora quando eu uso o throws eu uso para métodos, mas ele nao tem um bloco por exemplo catch pra mim tratar as excessões.
Por Exemplo
public void calculos() thorws NumberFormatException {
...
}
se der uma Excessão NumberFormat, onde eu posso tratar esse erro se nao tem um block catch por exemplo??
da pra fazer isso apenas usando o throws ou vou ter que por um bloco try ae dentro??
valeu
Se um método lança uma exception, quem vai trata-la é a classe que chama o método.
Ou seja, quando vc for utilizar o método calculos(), vc deve fazer isso dentro de um try-catch.
Quando vc. coloca um throws da declaração do metodo, vc. esta apenas “avisando” que tal metodo pode lançar a excessão especificada.
por exemplo:
Suponha que vc. tem um metodo em alguma classe que abre um arquivo qualquer. Se o arquivo nao existir, ocorrera uma FileNotFoundException. Voce tem duas alternativas: Tratar usando o bloco try/catch/finally ou “avisar” que essa excessão pode ocorrer colocando o throws na declaração do metodo, como segue abaixo.
public void openFile(String nomeArquivo) throws FileNotFoundException{;}
Neste caso quem devera tratar essa excessao sera o metodo que chama o openFile(String nomeArquivo).
Dessa forma vc. esta “passando a bola” para o metodo que sabe oque fazer com o erro.
O seu metodo openFile(String nomeArquivo) pode nao saber onde mostrar uma mensagem de erro. Imagine que vc. use o mesmo metodo tanto em uma aplicação swing como em uma aplicação web. A forma de apresentação do erro e completamente diferente, e ‘amarrar’ isso ao metodo openFile(String nomeArquivo) dificultaria a reutilização em outras aplicações.
Resumindo:
Excessoes ou voce TRATA usando try/catch/finally ou PASSA A BOLA pra frente usando o throws na declaração do metodo.
Vc pode declarar a thow e fazer um tratamento dele.
Colocando uma mensagem por exemplo.
ex
public static int calcula (String num)thorws NumberFormatException {
try {
return Integer.valueOf(num);
}
catch (NumberFormatException e) {
throw new NumberFormatException(“Deve ser fornecido um numero válido!”);
}
}
e onde o método foi chamado,
vc só recupera esta mensagem.
Tudo vai depender do que vc realmente quer fazer.
deixando um pouco mais facil e ilustrando as explicações dos amigos
vc só pode chamar um método que possui o throws se vc chamar esse método dentro de um bloco try/catch senão da um compiler error.
por exemplo
[code]public class Teste {
public Teste() {
a();
}
public void a() throws Exception {
System.out.println("A");
}
public static void main(String args[]) {
new Teste();
}
}[/code]
isso da erro, mas se vc por a chamado do método a() dentro de um bloco try/catch funciona perfeito.