Já não é a primeira vez que vejo isso. Primeiramente em um outro lugar em que trabalhava, me disseram que o correto seria chamar o método Open da XXXConnection fora (antes) do bloco Try, e quando questionei o porque, não souberam me explicar. Vejo isso muitas vezes em fóruns e recentemente li um artigo em uma revista nacional em que o autor fazia isso. Exemplo:
Dim conn As New SqlConnection(“CONNECTION_STRING”)
‘….
‘….
conn.Open()
Try
‘….
Pois bem, e se o servidor SQL Server estiver indisponível ou não existir o que acontecerá? O bloco Catch entrará em ação? Claro que não, pois a linha que gerou o erro, não está “gerenciada” pelo bloco Try e a Exception será atirada ao cliente. Pois bem, e porque será muitas pessoas insistem em dizer que o método acima é a forma correta de abrir a conexão com uma DB? Realmente estou muito curioso!
Outro código falho, é se fizer o seguinte:
Dim conn As New SqlConnection(“CONNECTION_STRING”)
‘….
‘….
Try
conn.Open()
‘….
‘….
conn.Close()
Catch ex As Expcetion
‘….
Isso também é bastante perigoso, já que se alguma Exception ocorrer depois da abertura da DB e antes do fechamento da mesma, logicamente a conexão com esta DB não fechará, e com isso, em breve o pool de conexões estoura, o que impedirá a sua aplicação e continuar a execução corretamente.
Esse tema também já foi discutido neste post, bem como as formas corretas de abrir e fechar a conexão, mas o fato de que as pessoas insistem em fazer dessa forma, ou seja, de abrir a conexão com a DB antes/fora do bloco Try ainda me deixa bastante confuso, onde não sei e gostaria de saber o que elas pensam a respeito. Será que alguém tem alguma explicação para tal?