Diferença entre throws e bloco try

4 respostas
programadormaia

Olá pessoal do GUJ!
Gostaria que alguem me ajudasse a entender a diferença entre o throws e o bloco try/catch ???

4 Respostas

Lavieri

quando vc faz....

try{ //ou seja tente
 //ele tenta realizar o código que esta dentro do bloco
 //quando há um erro, o bloco lança uma exceção
 //para parar a exceção, vc pode usar o CATCH, que segura a exceção
} catch (Exception ex) { //ou seja, segura qualquer exceção que seja do tipo Exception ou descendente.
 //aki vc pode agir, para contornar o problema da exceção
}

é mais ou menos assim.... vc quando tem um problema, que vc não pode tratar, em vez de vc tentar solucionar, vc simplismente passa o problema pra frente, ai quem tentou usar o seu método, que deve tratar do problema...

imagine q vc esta fazendo uma classe de inserir dados num banco, neste ponto, vc não tem q ficar xecando conexão de banco etc etc... para tal, vc simplismente pede a conexão, e insere os dados no banco caso haja erros, vc lança pra fora a exceção, através do throws

imagine que existe um método de se conectar um banco de dados, e vc invoca ele, c der erro, vc simplismente joga a exceção pra cima

public int insertDados(Values[] values) throws ConnectionException {
Connection conexao = getConnection(); //esse método pode gerar uma connectionException
//mais se preucupar com esse problema não te interesse, e vc lança a exceção, pra cima, 
//e quem se interessar em cuidar desse erro que o trate...
if (testaValues(values))
      throw new IllegalArgumentException("Os dados não estão conformes");

//... depois vc segue inserindo os dados, os erros de conexão ou formato de dados vc simplismente joga através do throw
}
victorwss
public class FimDoArquivoException extends Exception {
    ...
}

public class FazQualquerCoisa {
    public Coisa leAlgumaCoisaDoArquivo() throws FimDoArquivoException {
        if (temMaisAlgumaCoisaNoArquivo) {
            return proximaCoisaQueEstaNoArquivo;
        } else {
            throw new FimDoArquivoException();
        }
    }

    public void fazOutraCoisa() {
        ...
        Coisa c;
        try {
            c = leAlgumaCoisaDoArquivo();
            c.fazerAlgoLegal();
            c.fazerAlgoDivertido();
            ...
        } catch (FimDoArquivoException e) {
            mostrarMensagem("Desculpe, acabaram as coisas do arquivo.");
        }
    }
}
C

http://java.sun.com/docs/books/tutorial/essential/exceptions/

http://chaoticjava.com/posts/lets-try-throws-catch-finally/

Também deve ter alguma coisa aqui no Guj
[]'s

C

Boa resposta victorwss, rápido e simples. Programadormaia tem alguns posts em blogs ensinando as melhores práticas para o tratamento de exceções mas é bom começar com o java how to program.

[]'s

Criado 30 de janeiro de 2009
Ultima resposta 31 de jan. de 2009
Respostas 4
Participantes 4