알 수 없는 오류 처리

법적으로 반환 가능한 것으로 승인된 인터페이스 메서드의 구현에서만 상태 코드를 반환하는 것은 합법적입니다. 이 규칙을 준수하지 않으면 반환된 오류 코드 값과 애플리케이션에서 승인한 값 간에 충돌이 발생할 수 있습니다. 내부적으로 호출되는 함수에서 오류 코드를 전파할 때 이 잠재적인 문제에 특히 주의하세요.

인터페이스를 호출하는 애플리케이션은 성공 코드가 아닌 알 수 없는 반환된 오류 코드를 E_UNEXPECTED 동의어로 처리해야 합니다. 알 수 없는 오류 코드를 처리하는 이 방법은 COM 정의 인터페이스 및 함수의 클라이언트에서 필요합니다. 일반적인 프로그래밍 방법은 몇 가지 특정 오류 코드를 자세히 처리하고 나머지를 일반적으로 처리하는 것이므로 예기치 않은 오류 코드 또는 알 수 없는 오류 코드를 처리하는 이 요구 사항은 쉽게 충족됩니다.

인터페이스 메서드를 호출할 때 가능한 모든 오류를 처리하는 것이 중요합니다. 이렇게 하지 않으면 애플리케이션이 충돌하거나, 데이터가 손상되거나, 보안 악용에 취약해질 수 있습니다. 다음 코드 샘플에서는 알 수 없는 오류를 처리하는 권장 방법을 보여줍니다.

HRESULT hr; 
hr = xxMethod(); 
 
switch (GetScode(hr))  
{ 
    case NOERROR: 
      // Method returned success. 
      break; 
 
    case x1: 
      // Handle error x1 here.
      break; 
 
    case x2: 
      // Handle error x2 here.
      break; 
 
    case E_UNEXPECTED: 
    default: 
      // Handle unexpected errors here. 
      break; 
} 
 

다음 오류 검사 특수한 항목(S_OK 또는 예기치 않은 오류 이외의)을 반환하지 않는 루틴과 함께 사용되는 경우가 많습니다.

if (xxMethod() == NOERROR) 
{
    // Handle success here.
} 
else 
{
    // Handle failure here.
} 

COM에서 오류 처리