블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

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

Category

Recent Post

Recent Comment

Archive

2009. 8. 17. 17:15 .Net Project/.Net C#
반응형

 예외처리(Exception)
프로그램에서는 실행 중 발생하는 오류를 일관되게 처리할 수 있어야 합니다. 공용 언어 런타임에서는 일관된 방법으로 프로그램에 오류를 알리는 모델을 제공함으로써 내결함성이 있는 소프트웨어의 디자인을 지원합니다.
모든 .NET Framework 작업에서는 예외를 throw하여 오류를 나타냅니다.

1. 예외를 생성하는 언어나 예외를 처리하는 언어에 관계없이 예외를 처리합니다.
2. 예외 처리에 특별한 언어 구문이 필요하지는 않지만 각 언어에서 고유한 구문을
   정의할 수 있도록 허용합니다.
3. 프로세스나 컴퓨터에 의해 그 범위를 제한 받지 않고 예외가 throw되도록 허용합니다.


 Try Catch 관련하여 예외처리
try-catch 문은 try 블록과 각각 다른 예외의 처리기를 지정하는 하나 이상의
catch 절로 구성 되어 있습니다.

try 블록에는 예외를 발생시킬 수 있는 보호된 코드가 포함됩니다. 이 블록은 예외가 throw되거나 성공적으로 완료될 때까지 실행됩니다.

1. 예를 들어, 다음 예제와 같이 null 개체를 캐스팅하려고 하면   
   ullReferenceException 예외가 발생합니다.
2. catch 절은 인수 없이 사용할 수 있습니다. 이 경우 catch 절은 모든 예외 형식을
   catch하며 일반 catch 절로 간주됩니다. 또한 이 절은 System.Exception에서
   파생된 개체 인수를 받을 수 있습니다. 이 경우 catch 절은 특정 예외를 처리합니다.
3. try-catch 문에서 여러 개의 특정 catch 절을 사용할 수 있습니다. catch 절은
    순서대로 검사되므로 이런 경우에는 catch 절의 순서가 중요합니다.
    보다 구체적인 예외를 먼저 catch하십시오.
4.  throw 문을 catch 블록에 사용하여 catch 문에서 catch한 예외를 다시
    throw할 수 있습니다.
5. 현재 매개 변수가 없는 catch 절로 처리된 예외를 다시 throw하려면 인수
   없이 throw 문을 사용
6. try 블록 내에서는 이 블록에서 선언된 변수만 초기화하십시오.
   그렇지 않으면 블록 실행이 완료되기 전에 예외가 발생할 수 있습니다.  


 Program.cs

// 예외(Exception) :오류(Error)
// 컴파일(문법) 오류 : 잘못 타이핑, 잘못된 문법이면 VS가 바로 잡아준다
// 런타임(실행) 오류 : 실행시 발생
// 논리(잘못된 분석) 오류 : 잘못된 분석/설계/구현(오탈자) 등등
// 많은 프로그램 작성 경험

using System;

public class 예외처리{
    public static void Main()
    {
        //int c = 5 / 0;  상수를 0으로 나눌수 없기 때문에 문법 오류
        int a = 5;
        int b = 0;
        //int c = a / b; //런타임 에러 발생
        //int c = a + b; //논리상 나누기가 필요한데, 더하기(+)를 해버렸다.
        //Console.WriteLine("{0}", c);

        ExceptionHandling(); //호출
            
    }

    private static void ExceptionHandling()
    {
        int a = 5;
        int b = 0;

        try
        {
            //1. 예외 발생할만한 구문 넣어 놓는
            // int c = a / b; //예외가 발생할만한 구문은 try절에...
            throw (new Exception("내가만든에러"));  // 무조건 예외를 던지다(발생)
            //throw (new Exception("내가만든에러"));  // 무조건 예외를 던지다(발생)
            //DivideByZeroException dbze = new DivideByZeroException
                                                       ("듀글래?");
            //throw new DivideByZeroException("듀글래?");
            //throw dbze;
        }
        catch (Exception ex)
        {
            //2. 예외가 발생했을 때에만 실행됨
            Console.WriteLine("예외발생 : {0}", ex.Message); //메시지 출력           
            throw;
        }
        finally
        {
            //3. 예외가 발생하던 안하던 실행
            Console.WriteLine("프로그램을 정상 종료합니다.");
        }
    }
}

예외처리 과련 참고)

 http://msdn.microsoft.com/ko-kr/library/5b2yeyab(VS.80).aspx

Try-Catch 관련 참고)
 http://msdn.microsoft.com/ko-kr/library/0yd65esw(VS.80).aspx

반응형

'.Net Project > .Net C#' 카테고리의 다른 글

93장 제네릭클래스(Generic Class)  (0) 2009.08.18
92장 제네릭클래스(List Generic Class)  (0) 2009.08.17
90장 연산자오버로딩  (0) 2009.08.17
89장 변환연산자  (0) 2009.08.17
88장 반복기(Iterator)  (0) 2009.08.17
posted by Magic_kit