다음을 통해 공유


try-finally(C# 참조)

업데이트: 2010년 5월

finally 블록은 try 블록에서 할당된 리소스를 정리하고 예외 발생 여부에 관계없이 항상 실행해야 하는 코드를 실행하는 데 유용합니다. try 블록이 종료되는 방법에 관계없이 항상 제어가 finally 블록으로 전달됩니다.

catch는 문 블록에서 발생하는 예외를 처리하는 데 사용되지만 finally는 앞에 나오는 try 블록의 종료 방법에 관계없이 코드의 문 블록이 반드시 실행되도록 하는 데 사용됩니다.

예제

아래 예제에는 예외를 발생시키는 잘못된 변환문이 하나 있습니다. 프로그램을 실행하면 런타임 오류 메시지가 나타나지만 finally 절이 계속 실행되어 출력이 표시됩니다.

    public class ThrowTest
    {
        static void Main()
        {
            int i = 123;
            string s = "Some string";
            object o = s;

            try
            {
                // Invalid conversion; o contains a string, not an int
                i = (int)o;

                Console.WriteLine("WriteLine at the end of the try block.");
            }
            finally
            {
                // To run the program in Visual Studio, type CTRL+F5. Then 
                // click Cancel in the error dialog.
                Console.WriteLine("\nThe finally block is executed, even though"
                    + " an error was caught in the try block.");
                Console.WriteLine("i = {0}", i);
            }
        }
        // Output:
        // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
        // at ValueEquality.ThrowTest.Main() in c:\users\sahnnyj\documents\visual studio
        // 2010\Projects\ConsoleApplication9\Program.cs:line 21
        //
        // The finally block is executed, even though an error was caught in the try block.
        // i = 123
    }

위 예제에서는 System.InvalidCastException이 throw됩니다.

예외가 catch되었지만 finally 블록에 포함된 출력 문은 다음과 같이 여전히 실행됩니다.

i = 123

finally에 대한 자세한 내용은 try-catch-finally를 참조하십시오.

C#은 try-finally 문과 정확히 같은 기능을 수행하면서 더 간편한 구문인 using 문도 제공합니다.

C# 언어 사양

자세한 내용은 C# 언어 사양을 참조하십시오. 이 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.

참고 항목

작업

방법: 명시적으로 예외 Throw

참조

C# 키워드

try, catch, and throw Statements (C++)

예외 처리문(C# 참조)

throw(C# 참조)

try-catch(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조

변경 기록

날짜

변경 내용

이유

2010년 5월

결과를 명확하게 지정하기 위해 예제에 쓰기 문과 명령을 추가했습니다.

고객 의견