Didn't find this exact question/answer. In VB.NET, If I open a SqlConnection in a Try/Catch block, and an Exception is thrown (caught properly), is the connection implicitly closed, or do I have to close it? (does it even get opened if the Try failed?)
Would "test" this myself, but I don't really know how to tell if the connection is open or closed when the Exception is thrown.
Thanks!
No. That's why you'll want to declare the connection variable before the try/catch and add a finally to it to ensure you have a place where the connection can be closed and disposed:
Dim con As New SqlClientConnection( . . .)
Try
' DB Operations (create, read, update, delete) here
con.open()
Catch SqlClientException (ex)
' Deal with exception
Finally
' Code here will always run, whether or not the try code succeeded
' or if you wound up in a catch block. You can safely call .close()
' or (as shown below) .dispose() because if the connection is already
' closed/disposed, the call doesn't do anything.
' Dispose is what you want - it will not only close the
' connection, but it will release the .NET reference to
' the remote resource, freeing up that resource (the database
' in this case) to serve other clients.
con.Dispose()
End Try