다음을 통해 공유


방법: Finally 블록 사용

예외가 발생하면 실행이 중단되며 가장 가까운 예외 처리기로 제어가 넘어갑니다. 이것은 항상 호출될 것으로 예상되는 일련의 코드가 실행되지 않음을 의미합니다. 파일 닫기와 같은 일부 리소스의 정리는 예외가 throw되어도 항상 실행되어야 합니다. 이렇게 하기 위해 finally 블록을 사용할 수 있습니다. finally 블록은 예외의 throw 여부에 관계없이 항상 실행됩니다.

다음 코드 예제에서는 try/catch 블록을 사용하여 ArgumentOutOfRangeException을 catch합니다. 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();
}

참고 항목

작업

방법: Try/Catch 블록을 사용하여 예외 catch

방법: 명시적으로 예외 Throw

방법: 사용자 정의 예외 만들기

기타 리소스

예외 처리 기본 사항