다음을 통해 공유


try/catch를 사용하여 예외를 처리하는 방법

try-catch 블록은 작업 코드에서 생성된 예외를 catch하고 처리하기 위한 것입니다. 일부 예외는 catch 블록에서 처리될 수 있으며, 예외가 다시 throw되지 않고 문제가 해결됩니다. 그러나 대체로 수행할 수 있는 작업은 적절한 예외가 throw되었는지 확인하는 것뿐입니다.

예시

이 예제에서 IndexOutOfRangeException은 가장 적합한 예외가 아닙니다. 호출자가 전달한 index 인수로 인해 오류가 발생하기 때문에 ArgumentOutOfRangeException이 메서드에 더 적합합니다.

static int GetInt(int[] array, int index)
{
    try
    {
        return array[index];
    }
    catch (IndexOutOfRangeException e)  // CS0168
    {
        Console.WriteLine(e.Message);
        // Set IndexOutOfRangeException to the new exception's InnerException.
        throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
    }
}

설명

예외가 발생하는 코드는 try 블록으로 묶여 있습니다. catch 문이 발생하는 경우 IndexOutOfRangeException을 처리하기 위해 바로 뒤에 추가됩니다. catch 블록은 IndexOutOfRangeException을 처리하고 대신 더 적절한 ArgumentOutOfRangeException을 throw합니다. 호출자에게 최대한 많은 정보를 제공하기 위해 원래 예외를 새 예외의 InnerException으로 지정하는 것이 좋습니다. InnerException 속성은 읽기 전용이기 때문에 새 예외의 생성자에 할당해야 합니다.