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