Megosztás a következőn keresztül:


Ismeretlen hibák kezelése

Az állapotkódot csak a jogszerűen visszaadhatóként jóváhagyott interfészmetódus implementációjából lehet visszaadni. A szabály be nem tartása esetén fennáll a hibakód visszaadott értékei és az alkalmazás által jóváhagyott értékek közötti ütközés lehetősége. A belsőleg hívott függvények hibakódjainak propagálásakor különös figyelmet kell fordítani erre a lehetséges problémára.

Az interfészeket hívó alkalmazásoknak az ismeretlen visszaadott hibakódot (a sikerkód helyett) a E_UNEXPECTED szinonimájaként kell kezelnie. Az ismeretlen hibakódok kezelésére a COM által meghatározott felületek és függvények ügyfeleinek van szüksége. Mivel a tipikus programozási gyakorlat néhány konkrét hibakód részletes kezelése és a többi általános kezelése, a váratlan vagy ismeretlen hibakódok kezelésének követelménye könnyen teljesül.

Fontos, hogy minden lehetséges hibát kezeljen egy felületi metódus meghívásakor. Ennek elmulasztása az alkalmazás összeomlását, az adatok sérülését vagy a biztonsági rések sebezhetővé válását okozhatja. Az alábbi kódminta az ismeretlen hibák kezelésének ajánlott módját mutatja be:

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

A következő hibaellenőrzést gyakran használják azokkal a rutinokkal, amelyek nem adnak vissza semmi különlegeset (kivéve S_OK vagy valamilyen váratlan hibát):

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

hibakezelés a COM-ban