I encourage you to download a copy of Reflector or dotPeek; a using statement is compiled into a try-finally with a null-checked call to Dispose.
Unnecessarily catching exceptions you don't intend to deal with is a habit that is much more dangerous to stack traces, because it's easy to miss the huge semantic distinction between
// leaves the Exception's stack trace intact.
catch (Exception ex) { throw; }
and // Replaces the Exception's stack trace
// with a trace to the current execution point.
catch (Exception ex) { throw ex; }