Try/catch em conexões a BD

8 respostas
Umlauf

Olá pessoal!

Tenho uma pergunta bem idiota hehehe :oops:

Eu tava brincando um pouco com a minha HelloServlet e resolvi acessar um BD e listar os dados de uma tabela. Usei o jdbc:odbc bridge que vem no prórpio JDK pra acessar um bdzinho Access.

Tudo funcionou beleza, mas eu pastei pra descobrir que tem que colocar as linhas de conexão ao BD dentro de um try{} catch(){}. Toda vez que eu tentava compilar dava erro “…must be caught or declared to be thrown”.

Alguém poderia me explicar por que eu tenho que colocar a conexão ao bd dentro de um try/catch? Algo a ver com interface?

[]'s

8 Respostas

aconstantino
  1. Se ta rodando com access nao ta rodando direitinho eheheheh

vc tem que colocar pq se ele acha algum erro ele lanca uma exception e para lancar uma exception vc tem que fazer o metodo throwable

flw :slight_smile:

F

vc tem que colocar o codigo da conexao ao bd dentro de um try/catch porque os metodos usados para obter uma conexao podem lançar uma SQLException se ocorrer algum erro no acesso ao bd.

Outra forma de lidar com isso seria declarar o metodo dentro do qual vc faz a conexao com o bd da seguinte forma…

public void meuMetodo(...) throws SQLException{
  ...
}

Mas ai quem chamar meuMetodo(…) vai ter que se estar preparado para eventualmente receber essa excecao…

Umlauf

Hmmmmm, acho que entendi, mas o que ainda não está claro pra mim é pq esse erro se dá na compilação? Quero dizer, uma execption pode ocorrer em qualquer parte do código, certo? Ou não? Pq então o compilador exige try/catch apenas numa conexão a BD? Pq ele não pede qdo eu vou apenas dar um out.println(“Hello World”)? Essa exigência foi atribuída ao compilador pela Sun? Algo como: “Opa, o cara tá tentando conectar num BD, isso é fácil de dar pau então tem que exigir um try/catch”. É mais ou menos isso?

Desculpe, sou leigo mesmo :slight_smile:

aconstantino

Leia (2)

Umlauf

Ah saquei!!! Tudo que é passível de lançar uma exception deve estar contido num try/catch!

Thanks!! :smiley:

F

sim! Mas vc tb pode optar por passar a excecao adiante pra quem chamar o seu metodo…

E consultando a API do Java vc pode verificar quais metodos lancam excecoes e quais sao as excecoes lancadas.

J

Este erro se dá na compilação porque o compilador faz a verificação dos trechos que podem “jogar” uma exceção, então ele te obriga a fazer o tratamente [color=“blue”]try/catch[/color] … isto não significa que o erro ocorreu em tempo de compilação entende ? ele só fala que esta é uma linha onde pode ocorrer um erro em tempo de execução … ok ?

Umlauf

Entendi galera!
Muito obrigado a todos! :smiley:

[]'s

Criado 5 de dezembro de 2002
Ultima resposta 6 de dez. de 2002
Respostas 8
Participantes 4