Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

[Quiz] try, catch.. 그 이후?

작성자 : 박종명
최초 작성일 : 2009-09-23 (수요일)
최종 수정일 : 2009-09-23 (수요일)
조회 수 : 3068

문득, 그리고 분명, 헷갈려 하는 사람이 있으리라 보입니다
초 간단한 퀴즈 입니다

아래 코드에서,
Console.WriteLine("이 라인이 실행될까요?");  <--- 이 부분이 실행이 될까요, 실행되지 않을까요?

단번에 맞춰야 합니다
코드는 0으로 나누기 예외가 발생하도록 했습니다

        static void Main(string[] args)
        {
            try
            {
                int i = 0; int j = 1;
                int x = j / i;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw ex;
            }
            finally
            {
                Console.WriteLine("finally");
            }

            Console.WriteLine("이 라인이 실행될까요?");                       
        }

 

 

 

 

 

음..
단번에 맞추셨나요? 너무 무시(?)하는 문제인가요 ^^;

finally 는 예외가 발생하던 안하던 늘 실행되는 블럭이죠

그리고 try, catch, finally 블럭을 벗어난 하단의 코드는 실행되지 않습니다
이유는, catch 블럭의 throw 때문입니다. catch 블럭의 throw 는 예외를 재 발생 시킵니다
만일 throw 가 없었다면, 이 코드는 실행됩니다

예외 처리를 나름대로 멋지게 할려다가,
간혹 의도하지 않은 결과를 발생시킬 수도 있습니다. 특히 처음 개발을 시작하는 분들에게 많이 보입니다

물론 이 문제가 예외 처리 기법과는 조금 무관하기는 하지만, 한번 쯤 생각해 보세요
그리고 닷넷의 구조적 예외처리 기법에 대해 공부하세요

언어에서 지원하는 예외처리 기법이 당연한 것 처럼 받아 들이지만,
구조적 예외 처리 및 예외 객체를 사용하는 것은 이전 프로그래밍 환경에 비해 상당히 개선되고 유용한 기법입니다

예로,
MS SQL 2000 까지는 try, catch 블럭이 지원되지 않았죠
그래서 트랜잭션 내에서 예외 발생을 잡기 위해서는 SQL 로직 사이사이 @@ERROR 을 잡아 채야 했죠
물론 2005에서는 지원합니다

∵Commented by 나일수 at 2009-10-14 오후 2:12:02  
ㅎㅎ 이 문제는 MCP C# Winform 시험치를때 나온 문제로 기억하네요..
이름
비밀번호
홈페이지
NJ <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요