오류 처리 전략
인터페이스 메서드는 가상이므로 호출자가 하나의 호출에서 반환될 수 있는 전체 값 집합을 알 수 없습니다. 메서드의 한 구현은 5개의 값을 반환할 수 있습니다. 다른 8을 반환할 수 있습니다.
설명서에는 각 메서드에 대해 반환될 수 있는 일반 값이 나열됩니다. 이러한 값은 특별한 의미가 있으므로 코드에서 검사 처리해야 하는 값입니다. 다른 값은 반환될 수 있지만 의미가 없으므로 이를 처리하기 위해 특수 코드를 작성할 필요가 없습니다. 0 또는 0이 아닌 경우 간단한 검사 적합합니다.
HRESULT 값
COM 함수 및 메서드의 반환 값은 HRESULT입니다. 일부 HRESULT 값은 COM에서 변경되어 모든 중복 및 시스템 오류 코드와 겹치는 것을 제거합니다. 시스템 오류 코드를 중복하는 코드는 FACILITY_WIN32 변경되었으며 겹치는 코드는 FACILITY_NULL 유지됩니다. 일반적인 HRESULT 값 및 해당 값은 다음 표에 나와 있습니다.
HRESULT | 값 | 설명 |
---|---|---|
E_ABORT |
0x80004004 |
지정되지 않은 오류로 인해 작업이 중단되었습니다. |
E_ACCESSDENIED |
0x80070005 |
일반적인 액세스 거부 오류입니다. |
E_FAIL |
0x80004005 |
지정되지 않은 오류가 발생했습니다. |
E_HANDLE |
0x80070006 |
잘못된 핸들이 사용되었습니다. |
E_INVALIDARG |
0x80070057 |
하나 이상의 인수가 잘못되었습니다. |
E_NOINTERFACE |
0x80004002 |
QueryInterface 메서드가 요청된 인터페이스를 인식하지 못했습니다. 인터페이스는 지원되지 않습니다. |
E_NOTIMPL |
0x80004001 |
메서드가 구현되지 않았습니다. |
E_OUTOFMEMORY |
0x8007000E |
메서드가 필요한 메모리를 할당하지 못했습니다. |
E_PENDING |
0x8000000A |
작업을 완료하는 데 필요한 데이터는 아직 사용할 수 없습니다. |
E_POINTER |
0x80004003 |
잘못된 포인터가 사용되었습니다. |
E_UNEXPECTED |
0x8000FFFF |
치명적인 오류가 발생했습니다. |
S_FALSE |
0x00000001 |
메서드가 성공하고 부울 값 FALSE를 반환했습니다. |
S_OK |
0x00000000 |
메서드가 성공했습니다. 부울 반환 값이 필요한 경우 반환된 값은 TRUE입니다. |
네트워크 오류
오류 코드의 처음 네 자리 숫자가 8007이면 시스템 또는 네트워크 오류를 나타냅니다. net 명령을 사용하여 이러한 유형의 오류를 디코딩할 수 있습니다. 오류를 디코딩하려면 먼저 16진수 오류 코드의 마지막 4자리를 10진수로 변환합니다. 그런 다음 명령 프롬프트에서 다음을 입력합니다. 여기서 10진수 코드는 디코딩하려는 반환 값으로 바뀝니다.
net helpmsg <decimal_code>
net 명령은 오류에 대한 설명을 반환합니다. 예를 들어 COM에서 오류 8007054B를 반환하는 경우 054B를 10진수(1355)로 변환합니다. 다음을 입력합니다.
net helpmsg 1355
net 명령은 "지정된 도메인이 없습니다"라는 오류 설명을 반환합니다.
관련 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기