티스토리 뷰

C# Study

.NET 예외처리 (Exception)

하레_ 2013. 10. 17. 10:16
반응형

.NET 예외처리 (Exception)

 

 

예외처리

 

아래와 같이 오류의 리턴값에 대한 경우를 정해 놓고 오류를 처리하는게 가장 쉽고 편리하지만,

모든 경우에 리턴값이 나오는 것이 아니기 때문에 예외처리가 필요로 된다.

(Exception 구문)

 

 

int result = GetXXX();

 

if(result == -1)

 

...

else if (result == -2)

...

else if (result == -3)

 

 

특히 메모리 부분 같은 경우 리턴값이 없다.

 

 

 

 

 

Try ~ Catch 구문: 리턴값이 없어도 정상적으로 처리가 가능하다.

 

 

* Exception 구문 예제

 

 

 

 

  class Program
    {
        static void Main(string[] args)
        {

            long b = long.MaxValue;
            int a = (int)b;

            Console.WriteLine("a=  {0}", a);

 

           }
    }

 

출력해보면, b 값이 -1 이 아닌데 틀린 값이 나오는데 문제가 없는 것처럼 잘 실행이 된다.

오류를 감지 못한 것이기 때문에,이를 체크해야한다.

 

 

 

 

 

 


이렇게 하면 연산은 제대로 되지만 모든 구간에 대해 처리하기 때문에 스펙이 떨어지게 됨으로,

아래와 같이 체크를 사용한다.

 

 

 

checked
            {
                long b = long.MaxValue;
                int a = (int)b;

                Console.WriteLine("a=  {0}", a);
            }

 

 

 

체크 사용 후 디버그

 

 

 

 

 

예외처리를 사용하여 잡는다.

 

   try
            {

                checked
                {
                    long b = long.MaxValue;
                    int a = (int)b;


                    Console.WriteLine("a=  {0}", a);
                }
            }
            catch (Exception ex)     //제네럴한 예외에 대한 처리 규정
            {
                Console.WriteLine(ex.Message);
            }

 Console.WriteLine(MyClass.GetGreeting("홍길동"));

 

 

 

실행하면 아래와 같이 예외처리를 하고 다음 프로세스까지 정상적으로 실행됨

 

 

 

 

오류 여부에 관계 없이 무조건 실행해야 하는 코드는 finally 에 적는다.

 

 

 

반응형