다음을 통해 공유


예외 처리(오류 처리)

예외는 하드웨어 또는 소프트웨어에 의해 시작될 수 있으며 사용자 모드 코드뿐만 아니라 커널 모드에서도 발생할 수 있습니다. 구조적 예외 처리는 커널 모드 및 사용자 모드 예외 처리를 위한 단일 메커니즘을 제공합니다.

특정 명령 시퀀스를 실행하면 하드웨어에 의해 시작되는 예외가 발생할 수 있습니다. 예를 들어, 프로세스가 적절한 액세스 권한이 없는 가상 주소에서 읽거나 쓰려고 할 때 하드웨어에서 액세스 위반이 생성됩니다.

예외 처리가 필요한 이벤트는 소프트웨어 루틴 실행 중에도 발생할 수 있습니다(예: 잘못된 매개 변수 값이 지정된 경우). 이 경우 스레드는 RaiseException 함수를 호출하여 명시적으로 예외를 시작할 수 있습니다. 이 함수를 사용하면 호출 스레드가 예외를 설명하는 정보를 지정할 수 있습니다.

예외는 계속할 수 있음이거나 계속할 수 없음일 수 있습니다. 하드웨어에서 이벤트를 계속할 수 없거나 연속 작업이 의미가 없는 경우 종속할 수 없는 예외가 발생합니다. 계속할 수 없는 예외는 애플리케이션을 종료하지 않습니다. 따라서 애플리케이션은 예외를 catch하고 실행할 수 있습니다. 그러나 계속할 수 없는 예외는 일반적으로 손상된 스택 또는 기타 심각한 문제의 결과로 발생하여 예외에서 복구하기 어렵습니다.