// 예외(Exception) : 오류(Error)
// 컴파일(문법) 오류 : 잘못 타이핑, 잘못된 문법이면 Visual Studio가 바로 잡아준다.
//     - 많이 타이핑, 많은 학습을 해야 한다.
// 런타임(실행) 오류 : 실행시 발생,
//     - 많은 테스트를 해봐야 한다.
// 논리(잘못된분석?) 오류 : 잘못된 분석/설계/구현(오탈자) 등등
//     - 많은 프로그램 작성 경험이 필요하다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 예외처리
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5;
            int b = 0;
            //int c = 5 / 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에서 예외발생 : [2] [3]번 코드 실행
            // try에서 예외발생하지 않으면 : [3]번만 실행
            try
            {
                //[1] 예외 발생할만한 구문 넣어놓는곳...
                //int c = a / b; // 예외가 발생할만한 구문은 try절에...
                //throw (new Exception("내가 만든 에러")); // 예외를 던지다(발생) ==> throw는 에러를 발생시키는 구문이다.
                DivideByZeroException dbze = new DivideByZeroException("듀글래?");
                throw dbze; 
                // 위의 2줄을 간단히 한줄로 throw new DivideByZeroException("듀글래?");   <== 이렇게 써도 된다.
            }
            catch (Exception ex)
            {
                //[2] 예외가 발생했을 때에만 실행됨
                Console.WriteLine("예외발생 : {0}", ex.Message); // 메시지 출력
            }
            finally
            {
                //[3] 예외가 발생하던 안하던 실행
                Console.WriteLine("프로그램을 정상 종료합니다.");
            }
        }
    }
}

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

76. 제네릭클래스  (0) 2009.08.18
75. 리스트제네릭클래스  (0) 2009.08.17
73 . 연산자오버로드  (0) 2009.08.17
72. 변환연산자  (0) 2009.08.17
71. 반복기(Iterator)  (0) 2009.08.17
Posted by holland14
: