Применение блока finally

В некоторых случаях при обработке исключений с применением блоков try и catch имеет смысл дополнительно предусмотреть блок finally. Этот блок выполняется всегда, вне зависимости от того, произошло ли исключение в процессе работы блока try или нет.

Наилучшее применение для блока finally— освобождение ресурсов, заказан­ных программой перед возникновением исключений. Хотя система сборки мусора автоматически освобождает ненужную более оперативную память, другие ресурсы, та­кие, как, например, открытые потоки, связанные с файлами, следует закрывать явным образом, вызывая соответствующие методы.

Рассмотрим пример использования блока finally.

using System;

namespace Finally

class FinallyApp

namespase Finally

class FinallyApp

{

static void openFile(string path)

{

Console. WriteLine( "Открытке файла" );

}

static void closeFile()

{

Console.WriteLine(“Закрытие файйла”);

}

static void writeFile(string data)

{

Console.WriteLine(“запись в файл строки {0}”, data);

int x = 0;

int y = 5 / x;

}

static void Main(string[] args)

{

FinallyApp.openFile(“numbers.txt”);

}

try

{

FinallyApp.writeFilef"test");

}

catch(Exception ex)

{

Console.WriteLine(">>>>> Исключение: {0} ", ex.Message);

}

finally

{

FinallyApp.closeFile();

}

Console.ReadLine();

}

}

}