Try/Catch e Throws

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.