Throws SQLException

o que é essa cláusula throws para java.sql.SQLException

estava eu programando quando o próprio java me apresentou essa solução para um código meu
(estava dando errado)

private void chamarDados(String ordem)
{
    if(resultset.next())
    {
        resultset = bairroctr.chamarDados(ordem);

        mostrarDados();
    }
    else
    {
        
    }
}

quando eu adicionei concertou o código e deu certo

private void chamarDados(String ordem) throws SQLException
{
    if(resultset.next())
    {
        resultset = bairroctr.chamarDados(ordem);

        mostrarDados();
    }
    else
    {
        
    }
}

qual a explicação para throws SQLException

grato!

Leia aqui : http://www.devmedia.com.br/articles/post-3937-Tratamento-de-Excecoes-em-JAVA--throw-e-throws.html

vê se era essa a sua dúvida

Esse throws —Exception é uma indicação que o seu método pode lançar uma —Exception e ela não é tratada no próprio método…

(—Exception = alguma Excessão)

Ou seja, qualquer um que chamar seu método vai estar ciente que uma excessão daquele tipo pode ser lançada, e é obrigado a tratar essa excessão ou passar pra frente (ou seja colocar, também throws —Exception)

Aprofundando ainda mais:

Quando uma excessão é lançada, o java vai procurar por alguém que trate aquela excessão (bloco try/catch), seguindo a pilha de chamadas, ex:
Se um método a chama um método b que chama um método c que lança uma SQLException,
A jvm vai procurar um código de tratamento pra essa excessão no método c, se não encontrar, vai pro método b, assim sussecivamente, até encontrar alguém que a trate.

Há certas operações no Java, que já se espera que lancem excessões (operações de I/O, consulta ao BD, etc…) daí ou você trata as excessões, ou você passa pra frente, veja os ex:

... try{ //Código que pode lançar excessão }catch(SqlException e){ //Tratamento da excessão, será executado se alguma excessão desse tipo for lançada }finally{ //Usado mais para liberar recursos, é executado independentemente de ter ou não lançado excessão }
Ou também você pode declarar a excessão na assinatura do método que a lança, para que os outros métodos que invoquem este método estejam ciente do que pode ocorrer, ex:

public String lerArquivo(String caminho, String nome) throws IOException{ //Código que lê um arquivo pode lançar uma IOException, não tem bloco try/catch //Neste caso se uma excessão for lançada, o método "passa ela pra frente" }
Nesse caso o método que chamou o método lerArquivo que deve “estar preparado” pra quando uma excessão desse tipo for lançada :stuck_out_tongue:

Espero ter ajudado
[]'s

Vou da um exemplo e baseado nesse você vai entender o que é.

/*
Obs: o nome só deve conter letras .. se tiver números o programa envia um erro de "Nome inválido".

É o seguinte... nesse código o método lê o número e verifica se a variável numero  é válido (ou seja se só tem números) então com o "try" que significa TENTE ... tente converter para inteiro ... só vai conseguir converter se só tiver números concorda ? pq ele nao vai converter uma String letra para numero que é int _ int só aceita números.... então Try tente converter se conseguir, então  o valor da variável é correta só tem numeros, se nao consegui converter ele vai para o catch que significa (capture. [capture o erro]) e lance o erro para outra classe usando o throw ou então exiba uma mensagem... 

se eu usasse um throw dentro do catch obrigatoriamente eu tenho que colocar um throws Exception na assinatura do metodo aqui 
public  void exemplo_metodo() throws Exception{
pronto... o throws no singular fica dentro o metodo e o throws no plural fica na assinatura do método significa que aquele metodo pode enviar vários erros de tipos diferente... esse erro de conversão eu poderia ser mais especifico colocando no catch(NumberFormatException e) e na assinatura do método colocar throws NumberFormatException eu coloquei só exeception pq ele engloba todos os tipos de erro que tem ...
então a no seu caso.. se gerar erro no banco de dados ele vai lançar (throw / throws ) uma mensagem de erro exemplo: ("Erro na conexão do banco de dados"). 
*/
public void exemplo_metodo (){

String numero = "12232e";

try{

 int teste = Integer.parseInt(numero);
System.out.println("Número VÁLIDO");


}catch(Exception e){

System.out.println("Erro: Número Inválido");

}

}

O nome desse assunto é: Tratamento de exceção.

Obs: quando for postar seu código, utilize a formatação do blog
[este tópico explica tudo]