Практическое руководство. Использование блоков Finally
При возникновении исключения выполнение процессов останавливается, и управление передается ближайшему обработчику исключений. Часто это означает, что не выполняются те строки кода, которые, как предполагается, всегда вызываются. Очистка некоторых ресурсов, такая как закрытие файла, должна выполняться всегда, даже если создается исключение. Для этого можно использовать блок 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
End Class
using System;
class ArgumentOutOfRangeExample
{
public static 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.");
}
}
}
using namespace System;
ref class ArgumentOutOfRangeExample
{
public:
static void Main()
{
array<int>^ array1 = {0, 0};
array<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.");
}
}
};
int main()
{
ArgumentOutOfRangeExample::Main();
}
См. также
Задачи
Практическое руководство. Использование пробного блока и блока перехвата для перехвата исключений
Практическое руководство. Явное создание исключения
Практическое руководство. Создание пользовательских исключений