Porque usar alguns métodos só funciona usando try..catch?
5 respostas
oculos
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???
ResultSetrs=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{ResultSetrs=statement.executeQuery("SELECT * FROM tTabela");}catch(TabelaNaoExisteExceptionte){System.out.println("Usuário, esta tabela não existe.");}catch(NaoEstouMaisConectadoExceptionne){System.out.println("Usuário, a conexão com o banco de dados não existe mais.");}
Entendeu?
oculos
Sim isso eu entendi!
Mas o que eu estou com dúvida, é por exemplo assim:
exemplificando(não é real):
classTeste {
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:
aí compila e funciona normal!
Isso que queria entender!
Obrigado!
felipesp
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.
C
chicobento
Quando você declara um metodo, por exemplo:
publicvoidmetodoQualquer()throwsException;
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(Exceptione){System.out.println("Usuario, eu nao consegui gerar o PDF");}
oculos
Valeu pessoal, agora ficou claro!
Muito obrigado a todos!