* 해당 글은 윤성우의 뇌를 자극하는 윈도우즈 시스템 프로그래밍 도서를 읽고 정리한 글입니다
https://product.kyobobook.co.kr/detail/S000001223395
뇌를 자극하는 윈도우즈 시스템 프로그래밍 | 윤성우 - 교보문고
뇌를 자극하는 윈도우즈 시스템 프로그래밍 |
product.kyobobook.co.kr
[지금 무료]뇌를 자극하는 윈도우즈 시스템 프로그래밍 강의 | 한빛미디어 - 인프런
한빛미디어 | , [사진] 1. 강좌 소개 한빛미디어(주) 에서 발간한 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 의 저자 윤성우 님이 직접 강의하는 온라인 강좌입니다. 이미 여러 저서와 온라인
www.inflearn.com
* SEH(Structured Exception Handling)
__try
프로그램의 실제 흐름
__except
프로그램의 실제 흐름에 대한 예외처리 영역
* SEH는 __try 1개에 __except와 __finally 중에 1개 가능
ㄴ [대신] try는 중첩 사용 가능
* 하드웨어 예외(Hardware Exception)와 소프트웨어 예외(Software Exception)
* 종료 핸들러(Termination Handler)
프로그램이 정상적으로 실행되건,
문제 발생에 의해서 종료가 될 상황에 놓이게 되건,
무조건 실행하는 __finally 블록이 존재한다
__try
{
// 코드블럭
}
__finally
{
// 종료 처리 블록
}
* 종료 핸들러 활용처
① 파일 개방 후 닫아줘야 하는 작업
② 동적 할당 후 할당된 메모리 해제하는 작업
③ 뮤텍스를 소유한 쓰레드는 자신이 소유한 뮤텍스를 반드시 반환하는 작업
* 예외 핸들러(Exception Handler)
예외상황 발생 시 선별적 실행
__try
{
// 코드 블럭
}
__except (예외처리 방식)
{
// 예외처리를 위한 코드 지역
}
* 예외 처리 방식
EXCEPTION_EXECUTE_HANDLER
EXCEPTION_CONTINUE_EXECUTION
EXCEPTION_CONTINUE_SEARCH
* 자바는 다중 catch문을 지원하며,
여러 종류의 예외를 명확하게 분기 처리가 가능
* SEH는 단일 __except 블록만 허용되며,
이를 다중 분기로 나눌려면 예외 필터 함수(Filter Exception)을 통해 간접적으로 구현 필요
* 소프트웨어 기반의 개발자 정의 예외 → 소프트웨어 예외(Software Exceptions)의 발생
하드웨어 예외는 결정되어 있으나, 소프트웨어 예외는 결정해야만 한다
RaiseException 함수를 통해서 예외의 종류를 늘릴 수 있다
https://learn.microsoft.com/ko-kr/windows/win32/api/errhandlingapi/nf-errhandlingapi-raiseexception
RaiseException 함수(errhandlingapi.h) - Win32 apps
호출 스레드에서 예외를 발생시킵니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/debug/getexceptioncode
GetExceptionCode 매크로 - Win32 apps
발생하는 예외 형식을 식별하는 코드를 검색합니다. 이 함수는 필터 식 또는 예외 처리기의 예외 처리기 블록 내에서만 호출할 수 있습니다.
learn.microsoft.com
https://learn.microsoft.com/ko-kr/windows/win32/debug/getexceptioninformation
GetExceptionInformation macro - Win32 apps
예외에 대한 컴퓨터 독립적 설명과 예외가 발생할 때 스레드에 대해 존재하는 컴퓨터 상태에 대한 정보를 검색합니다. 이 함수는 예외 처리기의 필터 식 내에서만 호출할 수 있습니다.
learn.microsoft.com
SEH (Structured Exception Handling)
SEH (Structured Exception Handling) __try, __except를 이용하는 방법을 말합니다. try에서 실제 처리할 코드를 넣어주고 except에서 예외가 발생했을 때 처리하는 코드를 넣어줍니다. 보통 코드를 작성을하면 i
kblab.tistory.com
'IT공부 > IT서적' 카테고리의 다른 글
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 18장. 파일 I/O와 디렉터리 컨트롤 (0) | 2025.02.27 |
---|---|
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 15장. 쓰레드 풀링(Pooling), 16장. 컴퓨터 구조 - 4 (0) | 2025.02.20 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 13장, 14장. 쓰레드 동기화 기법 1, 쓰레드 동기화 기법 2 (0) | 2025.02.17 |
[뇌를 자극하는 윈도우즈 시스템 프로그래밍] 12장. 쓰레드의 생성과 소멸 (0) | 2025.02.13 |
[윤성우 열혈 C프로그래밍] 릴리즈 빌드(최적화 컴파일러 OFF), 어셈블리 코드 - Chapter25 (0) | 2025.02.12 |