No - a finally
block is executed even if no exception is thrown, and also even if another catch
block catches the exception. (That's true whether the catch
block then throws an exception itself or not.)
Oh, and a finally
block will also be executed if the try
block returns from the method.
Basically, if you want code to always execute when execution leaves the statement, finally
is what you want. Although in C# I find I rarely write an explicit finally
block - a using
statement nearly always makes the code simpler.