예외 처리에 관한 질문입니다.
WIN32의 구조화된 예외처리와 C++ 예외처리의 차이점, 관계.. 에 대한
질문입니다.
먼저 제가 현재 어느정도 이해하고 있는지를 참고하시라고 "" 안에 그에 대해
적도록 하겠습니다. 틀린 부분이 있다면 반드시 정정해 주시기 바랍니다.
" WIN32의 구조화된 예외처리는 운영체제 차원에서 지원하는 예외처리이다.
이 것은 따로 코드상에서 처리를 해 주지 않는다면 윈도우가 자체의 예외
처리 로직을 사용한다.
C++ 예외처리는 C에서의 함수의 반환값을 이용한 예외처리 개념에서 발전된
C++에 추가된 개념이다. WIN32의 구조화된 예외처리가 운영체제 차원에서
예외를
발생시키는데 반해 C++ 예외처리를 하려면 먼저 throw 구문을 이용해 꼭 예외를
발생시켜야 한다. "
" WIN32의 구조화된 예외처리는 윈도우 운영체제 자체에서 발생시키고 그에 대한
예외 처리 로직도 윈도우 자체가 가지고 있고(물론 소스상에 처리 루틴을
넣는다면
윈도우 자체의 처리 루틴을 사용하지 않는다),
C++ 예외처리는 그에 반해 소스상에서 예외를 발생시켜 주어야 하며 처리 루틴도
소스상에서 구현을 해야 된다. "
" MFC 클래스나 씨빌더(델파이)의 컴포넌트 소스에는 운영체제 차원에서
발생시키는 WIN32 예외의 처리 루틴을 작성하고 그 루틴에서 C++ 예외처리의
throw 구문을 사용해서 그에 상응하는 예외를 발생시킨다. 그러면 그 MFC
클래스나 컴포넌트를 사용하는 부분에서 예외처리를 하려고 하면
C++ 예외처리 구문들을 사용하면 되는 것이다.
그런데 여기서 WIN32 예외 처리를 바로 사용하지 않고 각 MFC 클래스나
컴포넌트
에서 C++ 예외처리로 포장(?)하는 이유는 WIN32 예외를 각 MFC 클래스나
컴포넌트
별의 세분화(?)된 예외로 처리하기 위해서이다.(한 WIN32 예외를
가지고서도 각
MFC 클래스나 컴포넌트 별로 그 MFC 클래스나 컴포넌트에 맞게 서로 다른
메시지
박스를 출력하는 등의..) "
위의 개념들 말고도 제 원 질문인 " WIN32의 구조화된 예외처리와 C++ 예외처리의
차이점, 관계.. " 에 대해 더 설명이 필요하다면 해 주시고요.
긴 질문 읽어 주셔서 감사합니다. 그럼 행복하세요.
|