Windows 의 구조적 예외 처리( Structured Exception Handling, SEH) 는 주소 접근 위반이나 산술 실패, 시스템 오류 같은 예기치 않은 비 동기적 사건에 대해 응용 프로그램이 대처할 수 있도록 하는 안정적인 메커니즘을 제공한다. 또한 SEH를 이용하면 코드 블록 안의 어느 곳에서도 프로그램을 종류할 수 있으며 그런 종료 상황에서 프로그래머가 지정한 처리 및 오류 복구가 수행되게 할수 있다. 예외 처리 구조가 없다면 NULL 포인터 참조라든가 0으로 나누기 같은 의도치 않은 예외 상황이 발생했을 때 프로그램이 즉시 종료된다. 예외 처리 절차는 다음과 같다.
1) 예외가 발생한다. 이번 예에서는 0으로 나누기에 의한 예외가 발생했다고 가정한다.
2) 제어권이 예외 처리부로 넘어간다. GetExceptionCode가 먼저 호출 되고, 반환값이 함수 필터의 인수가 된다.
3) 필터 함수는 주어진 오류 코드 값에 근거해서 행동을 결정한다.
4) 이 예에서 예외 코드는 EXCEPTION_INT_DIVIDE_BY_ZERO 이다.
5) 필터 함수는 예외 처리부를 수행해야 한다고 결정하고, 그에 맞게 EXCEPTION_EXECUTE_HANDLER를 돌려준다.
6) __except 절에 있는 예외 코드가 수행된다.
7) 제어권이 __try __except 블록을 벗어난다.
출처 : Windows 시스템 프로그래밍 윈도우즈 API 핵심 바이블
'0x001 Programming > 01. C | C++' 카테고리의 다른 글
[Tip] Heap Memory (0) | 2017.12.29 |
---|---|
[Example] 예외 처리 (0) | 2017.12.29 |
[Tip] 파일 잠금 (0) | 2017.12.29 |
[Example] 디렉터리 내용 출력 (0) | 2017.12.29 |
[Tip] 문자열 처리 관련 (0) | 2017.12.29 |