다음을 통해 공유


오류 및 예외 처리(Visual C# Express)

업데이트: 2007년 11월

C# 프로그램 실행 중 오류가 생기면 예외가 발생합니다. 예외가 발생하면 프로그램의 현재 흐름이 중지되고, 아무 작업도 수행되지 않는 경우에는 단순히 프로그램의 실행이 중지됩니다. 예외는 숫자를 0으로 나누는 것과 같은 프로그램 버그로 인해 발생하거나 사용자가 존재하지 않는 파일을 선택하는 것과 같은 예기치 않은 입력의 결과로 발생할 수 있습니다. 프로그램이 충돌로 인해 중단되지 않고 이러한 문제를 처리할 수 있도록 프로그래밍해야 합니다.

C#에서는 프로그램이 예외를 찾아 처리하고 실행을 계속할 수 있도록 하는 try, catch 및 finally 등의 여러 가지 키워드를 제공합니다. 이러한 키워드는 보다 안정적인 응용 프로그램을 만드는 데 아주 유용한 도구입니다.

Try 및 Catch

try 및 catch 키워드는 함께 사용됩니다. try는 예외가 생성될 가능성이 있는 코드 블록을 묶는 데 사용하고, catch는 예외가 발생할 경우 실행할 코드를 삽입하는 데 사용합니다. 다음 계산 예제에서는 0으로 나누기 예외를 만든 다음 이 예외를 catch합니다. try 및 catch 블록을 사용하지 않으면 이 프로그램에서는 오류가 발생합니다.

class ProgramTryCatch
{
    static void Main()
    {
        int x=0, y=0;

        try
        {
            x = 10 / y;
        }

        catch (System.DivideByZeroException)
        {
            System.Console.WriteLine("There was an attempt to divide by zero.");
        }
    }
}

catch 코드로 찾을 예외 형식을 구체적으로 지정하는 것이 바람직한 프로그래밍 습관입니다. 각 try 문에는 서로 다른 예외를 처리하는 여러 개의 catch 문이 있을 수 있습니다.

finally 블록

finally 블록에 포함된 코드는 예외 발생 여부와 상관없이 항상 실행됩니다. finally 블록을 사용하여 파일 닫기와 같은 리소스 반환 작업을 실행할 수 있습니다.

try
{
    // Code to try here.
}
catch (SomeSpecificException ex)
{
    // Code to handle exception here.
}
finally
{
    // Code to execute after try (and possibly catch) here.
}

예외 처리 사용

예외가 항상 프로그램에 심각한 문제가 발생했음을 나타내는 것은 아닙니다. 예외는 더 이상 관련이 없는 코드 섹션을 나가거나 메서드가 실패했음을 알리는 데도 유용하게 사용할 수 있습니다. 대부분의 .NET Framework 클래스 메서드에서는 특정 조건에 대해 경고하는 예외를 만듭니다.

throw 키워드를 사용하여 직접 예외를 발생시킬 수도 있습니다. 예를 들면 다음과 같습니다.

class ProgramThrow
{
    static void DoWork(int x)
    {
        if (x > 5)
        {
            throw new System.ArgumentOutOfRangeException("X is too large");
        }
    }

    static void Main()
    {
        try
        {
            DoWork(10);
        }
        catch (System.ArgumentOutOfRangeException ex)
        {
            System.Console.WriteLine(ex.Message);
        }
    }
}

예기치 않은 상황이 발생할 가능성이 있을 때 프로그램에 예외를 사용합니다. 예를 들어, 사용자의 입력을 처리하거나 인터넷에서 파일을 읽거나 정보에 액세스하는 경우가 이에 해당합니다.

참고 항목

작업

방법: 예외 catch(Visual C#)

개념

C# 언어 입문

참조

예외 처리문(C# 참조)

throw(C# 참조)

try-catch(C# 참조)

try-finally(C# 참조)

try-catch-finally(C# 참조)