Dispose ainda é chamado quando uma exceção é lançada dentro de uma instrução using?

No exemplo abaixo, a conexão será fechada e descartada quando uma exceção for lançada, se estiver dentro de umusing declaração?

using (var conn = new SqlConnection("..."))
{
    conn.Open();
    // stuff happens here and exception is thrown...
}

Eu sei que esse código abaixo garantirá que ele funcione, mas estou curioso para saber como usar a declaração.

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();
}

Palavras-chave:Qual é a maneira correta de garantir que uma conexão SQL seja fechada quando uma exceção é lançada?

questionAnswers(2)

yourAnswerToTheQuestion