<p>In this sentence:</p>

<pre><code>myCommand.ExecuteReader(CommandBehavior.CloseConnection)
</code></pre>

<p>does it close connection in case of exception?</p>

There are plenty of ways that the command can go wrong.
Ultimately it is the Close method of the data reader that will close the connection, provided nothing has gone wrong before.
If there is an exception that occurs inside ExecuteReader or any of its called methods, before the actual DataReader object is constructed, then no, the connection will not be closed.
In case of an exception, I wouldn't trust it to close the connection.