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.
}
Kapcsolódó témakörök