Блок finally
Ключевое слово finally задаёт код,
который запускают после завершения
try
и возможных catch.
finally срабатывает и при успехе,
и при перехвате ошибки. Для освобождения
ресурсов часто используют
using.
Синтаксис
try { }
catch (Exception) { }
finally
{
// выполнится всегда
}
Пример
Давайте напечатаем "done" из finally
после успешного try:
using System;
class Program
{
static void Main()
{
try
{
Console.WriteLine("ok");
}
finally
{
Console.WriteLine("done");
}
}
}
Результат выполнения кода:
"ok"
"done"
Пример
Давайте выполним finally после
catch:
using System;
class Program
{
static void Main()
{
try
{
int res = 1 / 0;
}
catch (DivideByZeroException)
{
Console.WriteLine("fail");
}
finally
{
Console.WriteLine("done");
}
}
}
Результат выполнения кода:
"fail"
"done"
Пример
Давайте оставим try без catch,
но с finally:
using System;
class Program
{
static void Main()
{
try
{
Console.WriteLine("step");
}
finally
{
Console.WriteLine("done");
}
}
}
Результат выполнения кода:
"step"
"done"