Практическое руководство. Использование блоков Finally
Обновлен: Ноябрь 2007
При возникновении исключения выполнение процессов останавливается, и управление передается ближайшему обработчику исключений. Часто это означает, что не исполняются те строки кода, которые, как предполагается, всегда вызываются. Очистка некоторых ресурсов, такая как закрытие файла, должна выполняться всегда, даже если создается исключение. Для этого можно использовать блок finally. Блок finally исполняется всегда, вне зависимости от возникновения исключения.
В следующем примере кода блок try/catch используется для перехвата ArgumentOutOfRangeException. Метод Main создает два массива и пытается скопировать один из них в другой. Это действие инициирует исключение ArgumentOutOfRangeException, и на консоль выводится сообщение об ошибке. Блок finally выполняется вне зависимости от результата операции копирования.
Пример
Imports System
Class ArgumentOutOfRangeExample
Public Shared Sub Main()
Dim array1 As Integer() = {0, 0}
Dim array2 As Integer() = {0, 0}
Try
Array.Copy(array1, array2, - 1)
Catch e As ArgumentOutOfRangeException
Console.WriteLine("Error: {0}", e)
Finally
Console.WriteLine("This statement is always executed.")
End Try
End Sub 'Main
End Class 'ArgumentOutOfRangeExample
using System;
class ArgumentOutOfRangeExample
{
static public void Main()
{
int[] array1={0,0};
int[] array2={0,0};
try
{
Array.Copy(array1,array2,-1);
}
catch (ArgumentOutOfRangeException e)
{
Console.WriteLine("Error: {0}",e);
}
finally
{
Console.WriteLine("This statement is always executed.");
}
}
}
См. также
Задачи
Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений
Практическое руководство. Явное создание исключения
Практическое руководство. Создание пользовательских исключений