Try Catch Finally

09/02/2008 - 11:02 von Thomas Hübner | Report spam
Hi NG,

Die Ausnahmebehandlung in NET ist ja eine unheimlich màchtige Funktion.
Im folgenden möchte ich sicherstellen, das die Connection beim Verlassen
der Sub deffinitiv geschlossen ist. Reicht da das con.close() in
"Finally"? Kann ein con.Close() auch eine Ausnahme hervorrufen wenn
con.Open() vorher gescheitert ist?

Const cnString As String = "Server=TOMMY\SQLExpress;Initial
Catalog=test;Trusted_Connection=Yes;"

'DB Tabelle ADM enthàlt ID|ADM(Text)|ACTIVE(Bool)

Private Sub load_lbo_ADM()
lbo_ADM.Items.Clear()
Dim con As New SqlConnection(cnString)
Try
con.Open()
Dim Table As New DataTable
Dim da As New SqlDataAdapter("SELECT * FROM ADM", con)
da.Fill(Table)
Dim DataLine As DataRow
For Each DataLine In Table.Rows
If DataLine.Item(2).ToString = True Then _
lbo_ADM.Items.Add(DataLine.Item(1).ToString)
Next
Catch ex As Exception
MsgBox(ex.ToString)
Finally
con.Close()
End Try
End Sub
 

Lesen sie die antworten

#1 Armin Zingler
09/02/2008 - 12:31 | Warnen spam
"Thomas Hübner" schrieb
Hi NG,

Die Ausnahmebehandlung in NET ist ja eine unheimlich màchtige
Funktion. Im folgenden möchte ich sicherstellen, das die Connection
beim Verlassen der Sub deffinitiv geschlossen ist. Reicht da das
con.close() in "Finally"? Kann ein con.Close() auch eine Ausnahme
hervorrufen wenn con.Open() vorher gescheitert ist?

Const cnString As String = "Server=TOMMY\SQLExpress;Initial
Catalog=test;Trusted_Connection=Yes;"

'DB Tabelle ADM enthàlt ID|ADM(Text)|ACTIVE(Bool)

Private Sub load_lbo_ADM()
lbo_ADM.Items.Clear()
Dim con As New SqlConnection(cnString)
Try
con.Open()
Dim Table As New DataTable
Dim da As New SqlDataAdapter("SELECT * FROM ADM", con)
da.Fill(Table)
Dim DataLine As DataRow
For Each DataLine In Table.Rows
If DataLine.Item(2).ToString = True Then _
lbo_ADM.Items.Add(DataLine.Item(1).ToString)
Next
Catch ex As Exception
MsgBox(ex.ToString)
Finally
con.Close()
End Try
End Sub




Ich würde es folgendermaßen strukturieren, da con.close nur ausgeführt
werden muss, wenn die Datenbank auch erfolgreich geöffnet werden konnte.

try
con.open
try
'Code
finally
con.close
end try
catch
'behandlung
end try



Armin

Ähnliche fragen