Porque usar alguns métodos só funciona usando try..catch?

E aí pessoal do GUJ, tudo beleza?

Sou iniciante em Java, e gostaria de saber porquê só funciona
alguns métodos que já usei usando o try…catch???
Estava fazendo um exemplo do HelloWorld do iText e vi que
funciona uns métodos usando try…catch!

Gostaria de saber o porquê? Tem a haver com implements
também???

Obrigado pessoal! :smiley:

ResultSet rs = statement.executeQuery( "SELECT * FROM tTabela" );

O método executeQuery( String query ) faz uma consulta no banco de dados e retorna os dados para o objeto ResultSet.

Várias coisas podem dar errado, por exemplo a Tabela não existir, ou a conexão com o banco de dados não existe mais.

Por isso o try…catch. Isto faz com que as exceções e erros possam ser capturados e tratados. Criando outro exemplo (irreal) com o código anterior ficaria algo como:

try
{
    ResultSet rs = statement.executeQuery( "SELECT * FROM tTabela" );
}
catch( TabelaNaoExisteException te )
{
    System.out.println( "Usuário, esta tabela não existe." );
}
catch( NaoEstouMaisConectadoException ne )
{
    System.out.println( "Usuário, a conexão com o banco de dados não existe mais." );
}

Entendeu?

Sim isso eu entendi!
Mas o que eu estou com dúvida, é por exemplo assim:
exemplificando(não é real):

class Teste {
metodoQualquer();
}

assim dá um erro de compilação acusando que o método(metodoQualquer) não é um tipo ou um outra erro!

mas quando coloco o mesmo codigo acima com try…catch:

class Teste {
try {
metodoQualquer();
}
catch (Exception e) {
Erro;
}
}

aí compila e funciona normal!
Isso que queria entender!
Obrigado! :smiley:

O java detecta, durante a compilação, se o médoto que vc está chamando pode levantar uma exceção. Caso positivo ele obrigado que vc utilize o try…catch. No caso, o método que você está chamando tem essa característica.

O único tipo de exceção que não gera essa necessidade é a exceção em tempo de execução.

Quando você declara um metodo, por exemplo:

public void metodoQualquer() throws Exception;

vc está dizendo: O metodoQualquer pode fazer qualquerCoisa, mas pode ser que ele não consiga fazer qualquerCoisa. No caso de ele não conseguir fazer o que ele propõe, o ideal é lançar uma exceção avisando quem o chamou que ele não conseguiu fazer o que ele havia proposto.

Por isso, o metodo do iText está te dizendo:
vou gerar um PDF mas pode ser que eu não consiga!

então no catch vc deve colocar o que fazer quando o metodo não conseguir gerar o pdf.
Exemplo:

try {
     geraPDF();
     System.out.println("Conseguí gerar o PDF");
} catch( Exception e ) {
     System.out.println("Usuario, eu nao consegui gerar o PDF");
}

Valeu pessoal, agora ficou claro!
Muito obrigado a todos! :smiley: :slight_smile: