If I have a using block surrounding a try catch statement what will happen to the object inside that using statement should the catch fire an exception? Consider the following code:
using (IDatabaseConnectivityObject databaseConnectivityObject = new DbProviderFactoryConnectionBasicResponse())
{
try
{
Foo();
}
catch (ArgumentNullException e)
{
throw;
}
}
If we assume Foo() fails and the exception is fired and effectively breaks the program will databaseConnectivityObject be disposed? The reason this is important is that the object has a database connection associated with it.
You can think of
usingas a short-hand for try-finally. Hence your code is equivalent to:Looked at this way, you can see that the
Dispose()will indeed be called if the exception throws, because the try-finally is outside of the try-catch.This is precisely why we use
using.