I’m trying to leverage the using block more and more these days when I have an object that implements IDisposable but one thing I have not figured out is how to catch an exception as I would in a normal try/catch/finally … any code samples to point me in the right direction?
Edit: The question was modified after reading through the replies. It was ‘How to Throw an exception in a using block with .NET 2.0?’ but I was actually looking for a way to catch these exceptions inside a using block.
I’m looking for more detail on rolling my own catching block inside a using block.
Edit: What I wanted to avoid is having to use a try/catch/finally inside my using block like @Blair showed. But maybe this is a non issue…
Edit: @Blair, this is exactly what I was looking for, thanks for the detailed reply!
I don’t really understand the question – you throw an exception as you normally would. If
MyThingimplementsIDisposable, then:And
thing.Disposewill be called as you leave the block, as the exception’s thrown. If you want to combine a try/catch/finally and a using, you can either nest them:(Or put the try/catch/finally in the using):
Or you can unroll the
usingand explicitly callDisposein thefinallyblock as @Quarrelsome demonstrated, adding any extra exception-handling or -recovery code that you need in thefinally(or in thecatch).EDIT: In response to @Toran Billups, if you need to process exceptions aside from ensuring that your
Disposemethod is called, you’ll either have to use ausingandtry/catch/finallyor unroll theusing– I don’t thinks there’s any other way to accomplish what you want.