블로그 이미지
Kanais
Researcher & Developer 퍼즐을 완성하려면 퍼즐 조각들을 하나 둘씩 맞춰나가야 한다. 인생의 퍼즐 조각들을 하나 둘씩 맞춰나가다 보면 인생이란 퍼즐도 완성되는 날이 오려나...?

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Notice

2015. 5. 19. 16:20 Programming/.NET

 

작성날짜    : 2011-04-08


출처 : http://msdn.microsoft.com/ko-kr/library/dszsf989(v=VS.80).aspx

http://msdn.microsoft.com/ko-kr/library/zwc8s4fz(v=VS.80).aspx


try-finally

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

 

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

 

예제 소스

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

class Program

    {

        static void Main(string[] args)

        {

int i = 123;

            string s = "Some string";

            object o = s;

 

            try

            {

                // Invalid conversion; o contains a string not an int

                i = (int)o;

            }

            finally

            {

                Console.Write("i = {0}", i);

            }

        }

    }

 

결과 화면



try-catch-finally

 

일반적으로 catch finally를 함께 사용하여 try 블록에서 리소스를 가져와 사용하고 catch 블록에서 예외 상황을 처리한 다음, finally 블록에서 리소스를 해제합니다.

class Program

    {

        static void Main(string[] args)

        {

            try

            {

                Console.WriteLine("Executing the try statement.");

                throw new NullReferenceException();

            }

            catch (NullReferenceException e)

            {

                Console.WriteLine("{0} Caught exception #1.", e);

            }

            catch

            {

                Console.WriteLine("Caught exception #2.");

            }

            finally

            {

                Console.WriteLine("Executing finally block.");

            }

        }

    }

 

결과 화면


'Programming > .NET' 카테고리의 다른 글

[.NET] DataAdapter 생성  (0) 2015.05.19
[.NET] DataAdapter  (0) 2015.05.19
[.NET] Windows Form Timer  (0) 2015.05.19
[.NET] Form  (0) 2015.05.19
[.NET] Remoting  (0) 2015.05.19
posted by Kanais