Question

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
}
Was it helpful?

Solution

Exactly the same thing that would happen if it wasn't in a finally block - an exception could propagate from that point. If you need to, you can try/catch from within the finally:

try
{
    DoSomethingWithDevice();
}
finally
{
    try
    {
        LockDevice();
    }
    catch (...)
    {
        ...
    }
}

OTHER TIPS

The method is called Try / Catch

Where is your catch?

UnlockDevice();

try
{
  DoSomethingWithDevice();
}
catch(Exception ex)
{
  // Do something with the error on DoSomethingWithDevice()
}
finally
{
   try
   {
      LockDevice(); // can fail with an exception
   }
   catch (Exception ex)
   {
       // Do something with the error on LockDevice()
   }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top