En el siguiente ejemplo, ¿se cerrará y eliminará la conexión cuando se lance una excepción si está dentro de una using
declaración?
using (var conn = new SqlConnection("..."))
{
conn.Open();
// stuff happens here and exception is thrown...
}
Sé que este código a continuación se asegurará de que lo haga, pero tengo curiosidad por saber cómo lo hace la declaración de uso.
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();
}
Relacionado:
¿Cuál es la forma correcta de garantizar que una conexión SQL se cierre cuando se lanza una excepción?
c#
asp.net
using-statement
Brian Kim
fuente
fuente
Así es como reflector decodifica el IL generado por su código:
Entonces la respuesta es sí, cerrará la conexión si
lanza una excepción.fuente
Dispose () no se llama en este código.
fuente