Czy w poniższym przykładzie połączenie zostanie zamknięte i usunięte, gdy zostanie zgłoszony wyjątek, jeśli znajduje się w using
instrukcji?
using (var conn = new SqlConnection("..."))
{
conn.Open();
// stuff happens here and exception is thrown...
}
Wiem, że poniższy kod sprawi, że tak się stanie, ale jestem ciekaw, jak to robi za pomocą instrukcji.
var conn;
try
{
conn = new SqlConnection("...");
conn.Open();
// stuff happens here and exception is thrown...
}
// catch it or let it bubble up
finally
{
conn.Dispose();
}
Związane z:
Jaki jest właściwy sposób zapewnienia zamknięcia połączenia SQL w przypadku zgłoszenia wyjątku?
c#
asp.net
using-statement
Brian Kim
źródło
źródło
Oto jak reflektor dekoduje IL wygenerowany przez twój kod:
Więc odpowiedź brzmi tak, to zamknie połączenie, jeśli
zgłasza wyjątek.źródło
Dispose () nie jest wywoływana w tym kodzie.
źródło