Pessoal qual a diferença entre tratar uma exception utilizando o comando throw e utilizando o bloco try/catch?
Agradeço.
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