عموما از کدهای قرار گرفته در قطعه finally جهت آزاد سازی منابع استفاده میشود و تضمین شده است که این قطعه همواره اجرا میگردد، صرفنظر از اینکه آیا در قطعه try استثنایی رخ داده است یا خیر.
اما مثال زیر را در نظر بگیرید:
using System;
namespace testWinForms87
{
class CTestFinally
{
public static void Run()
{
try
{
TryAndTry();
}
catch (Exception exError)
{
Console.WriteLine(exError.Message);
}
finally
{
Console.WriteLine("Finally...!");
}
Console.ReadKey();
}
static void TryAndTry()
{
try
{
TryAndTry();
}
catch (Exception exError)
{
Console.WriteLine(exError.Message);
}
finally
{
Console.WriteLine("Try: Finally...!");
}
}
}
}
در این کد به علت بروز stack overflow هیچگاه به finally نخواهیم رسید.