Quando uso o throws?

Galera, desculpe a pergunta ignorante, mas vai minha dúvida:

  • Como uso o throws e quando uso ele e quando uso o try/catch?
    Não seria a mesma coisa eu tratar um erro no throws e no try/Catch?

Muito obrigado.
Abs

O throws você usa em métodos para forçar o desenvolvedor a chamar seu método dentro de um try/catch.

No javafree você encontra uma discussão bem legal sobre o assunto.

O uso de try/catch/finaly e throws não é simples, em muitos livros é 1 capítulo… recomendo dar uma procurada até mesmo aqui nos artigos do próprio GUJ… deve ter alguma coisa lá.

De qq forma, vou dar uns exemplos bem simples só pra tentar esclarecer.

try/catch usa-se quando você quer tratar determinada funcionalidade não esperada… exemplo:

try{ numero = outroNumero / maisOutroNumero; }catch(arithmeticexception e){ numero = 0; System.err.println("erro... divisao invalida, contornando erro"); }

throws se usa quando você quer subir uma exceção para quem chamou seu método…

um exemplo:

[code]
public User loadUserById(Integer id) throws Exception{

if( id == null )
throws UserNotFoundException(“User with id = 0 not exists”);

}[/code]

também usa-se tudo isso combinado, principalmente quando criamos nossas próprias Exceptions… (esse é mais complicado um pouco, se quiser esquece disso por enquanto)
um exemplo, geralmente em camadas de persistência como um DAO, fazemos nossa própria exceção, tratando erros e subindo esses erros através da nossa exception criada

try{ entityManager.load(1); }catch(Exception e){ throws new DAOException(e.getMessage()): }

Se no Brasil se jogasse beisebol, era bem fácil de explicar

  • throw = atirar a bola (erro);
  • catch = agarrar a bola;
  • throws = o método indica que pode “atirar uma bola” ou não, e qual o tipo da bola.