But with a 'using' you can't catch an exception.
So in production I end up using ( ;-) ) try catch finally.
The easy solution is to make sure that your Dispose() calls don't throw exceptions, unfortunately some of Microsoft's classes don't conform to this (e.g. WCF clients).
The following MSDN article shows a case where they do not recommend using "using", and instead suggest explicitly using try-catch-finally: http://msdn.microsoft.com/en-us/library/aa355056.aspx
[Citation needed]
Then what's the point of having a 'using + catch' instead of a 'try catch finally' ?