Поиск

Освобождение ресурсов с помощью finally

Один трудный вопрос с обработкой ошибок связан с тем, что код всегда выполняется независимо от того, уловлено ли исключение. Например, вы выделили ресурс, такой как физическое устройство или файл данных. Теперь предположим, что вы открыли этот ресурс и вызвали метод, передавший исключение. Независимо от того, может ли ваш метод продолжить работу с ресурсом, вам в любом случае нужно освободить или закрыть ресурс. Здесь-то и применяется ключевое слово finally:

using System;
public class ThrowExceptionlApp {
public static void ThrowExceptionQ
{
throw new ExceptionO;
}
public static void MainQ {
try {
Console.WriteLine("try..."); >
catch(Exception e) {
Console.WriteLine("catch..."); }
finally {
Console.WriteLine("finally"); } } >

Как видите, finally позволяет избежать двойного кодирования освобождения ресурса: в блоке catch и после блоков try/catch. Независимо от того, передано ли исключение, будет выполнен код в блоке finally.