No exemplo abaixo, a conexão será fechada e descartada quando uma exceção for lançada se estiver dentro de uma using
instrução?
using (var conn = new SqlConnection("..."))
{
conn.Open();
// stuff happens here and exception is thrown...
}
Eu sei que o código abaixo irá garantir que sim, mas estou curioso para saber como o uso de instrução faz isso.
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:
Qual é a maneira correta de garantir que uma conexão SQL seja fechada quando uma exceção é lançada?
c#
asp.net
using-statement
Brian Kim
fonte
fonte
É assim que o refletor decodifica o IL gerado pelo seu código:
Portanto, a resposta é sim, a conexão será fechada se
lança uma exceção.fonte
Dispose () não é chamado neste código.
fonte