Sdílet prostřednictvím


Zpracování neznámých chyb

Je legální vrátit stavový kód pouze z implementace metody rozhraní schválené jako právně vratitelné. Nedodržení tohoto pravidla může vést ke konfliktu mezi vrácenými chybovými kódy a těmi, které jsou schváleny aplikací. Věnujte zvláštní pozornost tomuto potenciálnímu problému při šíření kódů chyb z funkcí, které se volají interně.

Aplikace, které volají rozhraní, by měly zacházet s jakýmkoli neznámým vráceným kódem chyby (na rozdíl od kódu úspěchu) jako se synonymem E_UNEXPECTED. Tento postup zpracování neznámých kódů chyb vyžaduje klienti rozhraní a funkcí definovaných na modelu COM. Vzhledem k tomu, že typickým programovacím postupem je podrobně zpracovat několik konkrétních kódů chyb a pracovat s ostatními obecně, je tento požadavek na zpracování neočekávaných nebo neznámých kódů chyb snadno splněn.

Při volání metody rozhraní je důležité zpracovat všechny možné chyby. Pokud to neuděláte, může dojít k chybovému ukončení aplikace, poškození dat nebo k ohrožení zabezpečení. Následující ukázka kódu ukazuje doporučený způsob zpracování neznámých chyb:

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; 
} 
 

Následující kontrola chyb se často používá u rutin, které nevracejí nic zvláštního (jiné než S_OK nebo neočekávanou chybu):

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

Zpracování chyb v modelu COM