Dúvida throw e try/catch

Pessoal qual a diferença entre tratar uma exception utilizando o comando throw e utilizando o bloco try/catch?

Agradeço.

throw --> lança uma excessão

try—> aki vai o código que pode lançar a excessão

catch—> se a excessão ocorrer aki vai o código p/ trata-la

Usando o throw vc lança a excessão para o método que chamar esse que lança a excessão tratar.

Ja usando o try/catch, vc trata a excessão.

Valeu pela ajuda pessoal…

Basicamente com o try…catch o seu método está dizendo:
“Ei, eu sei resolver esse problema. Deixa comigo.”
O caso abaixo é um exemplo disso (embora não seja a maneira mais correta de se resolver esse problema):

public void mostraDivisao(int a, int b) { try { System.out.println("O resultado da divisão é: " + (a / b)); } catch (ArithmeticException e) { System.out.println("Não dá para dividir por zero!"); }

Note que quem usa o método acima não precisa nunca pegar exceção e nem se preocupar com divisões por zero.

Se você colocar throws na declaração do método, você está dizendo.
“Olha, tem certas operações que eu executo, que não tenho a mínima idéia de como resolver, resolva você”. Por exemplo:

public void imprimeTexto(File texto) throws FileNotFoundException { //Implementação do método }

O que esse método está dizendo? Que ele pode imprimir o arquivo, mas que ele não sabe o que fazer se o arquivo for encontrado. O usuário do método será obrigado a fazer um try…catch para esse caso.

Finalmente, temos o caso do throw. Você pode transformar uma exceção em outra, ou mesmo gerar uma exceção completamente nova, quando você não souber o que fazer.

O exemplo abaixo cria uma nova exceção:

public void desenhaTriangulo(int a, int b, int c) { if (!eUmTriangulo(a, b, c)) throw new TramanhoDosLadosInvalidoException(); }

Esse aqui, converte uma exceção para uma mais adequada:

public ResultSet consultaBanco(String sql) { try { return statement.executeQuery(sql); catch (SQLException e) { throw new RuntimeException("Não foi possível executar" + sql, e); } }

throw lanca uma execeção para o metodo que o chamou. Ou seja ocorreu uma execeção ele lanca para o metodo que o chamou ele agora q se vire com a execeção…

Obrigado a todos pela ajuda.

Edita o título do tópico ae xD
Dúvida : throw e try/catch

:wink: