Да, конечно. Если что-либо находится в блоке ПОСЛЕ того, как предложение using генерирует исключение, соединение будет закрыто. Единственный способ, которым блок finally не будет выполнен, - это если «new SqlConnection (...)» выбрасывает, но в этом случае у вас фактически не будет действительного открытого соединения для закрытия. Так что все в порядке.

веденном ниже примере соединение закрывается и удаляется при возникновении исключения, если оно находится в пределахusing заявление?

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

Я знаю, что приведенный ниже код будет гарантировать, что это так, но мне любопытно, как это делает оператор using.

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

Связанный:Как правильно обеспечить закрытие соединения SQL при возникновении исключения?

Ответы на вопрос(2)

Ваш ответ на вопрос