en un bloque "en uso", ¿se cierra una SqlConnection a cambio de una excepción?

Primera pregunta:
Di que tengo

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    string storedProc = "GetData";
    SqlCommand command = new SqlCommand(storedProc, connection);
    command.CommandType = CommandType.StoredProcedure;
    command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));

    return (byte[])command.ExecuteScalar();
}

¿Se cierra la conexión? Porque técnicamente nunca llegamos al último} Como nosotrosreturn antes de eso.

Segunda pregunta:
Esta vez tengo:

try
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        int employeeID = findEmployeeID();

        connection.Open();
        SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
        command.CommandType = CommandType.StoredProcedure;
        command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
        command.CommandTimeout = 5;

        command.ExecuteNonQuery();
    }
}
catch (Exception) { /*Handle error*/ }

Ahora, digamos en algún lugar deltry obtenemos un error y queda atrapado. ¿La conexión todavía se cierra? Porque nuevamente, omitimos el resto del código en eltry e ir directamente a lacatch declaración.

¿Estoy pensando demasiado linealmente en cómousing ¿trabajos? es decirDispose() simplemente llama cuando dejamos elusing ¿alcance?

Respuestas a la pregunta(7)

Su respuesta a la pregunta