Consider the following code where LockDevice() could possibly fail and throw an exception on ist own. What happens in C# if an exception is raised from within a finally block?
UnlockDevice(); try { DoSomethingWithDevice(); } finally { LockDevice(); // can fail with an exception }