Hantera okända fel
Det är lagligt att returnera en statuskod endast från genomförandet av en gränssnittsmetod som är sanktionerad som rättsligt returnerbar. Om den här regeln inte observeras kan det uppstå en konflikt mellan returnerade felkodsvärden och de som sanktioneras av programmet. Var särskilt uppmärksam på det här potentiella problemet när du sprider felkoder från funktioner som anropas internt.
Program som anropar gränssnitt bör behandla eventuell okänd returnerad felkod (i stället för en lyckad kod) som synonymt med E_UNEXPECTED. Den här metoden för att hantera okända felkoder krävs av klienter i COM-definierade gränssnitt och funktioner. Eftersom typisk programmeringspraxis är att hantera några specifika felkoder i detalj och behandla resten allmänt, är det här kravet på att hantera oväntade eller okända felkoder enkelt uppfyllt.
Det är viktigt att hantera alla möjliga fel när du anropar en gränssnittsmetod. Om du inte gör det kan programmet krascha, skada data eller bli sårbart för säkerhetsexploateringar. Följande kodexempel visar det rekommenderade sättet att hantera okända fel:
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;
}
Följande felkontroll används ofta med de rutiner som inte returnerar något speciellt (förutom S_OK eller något oväntat fel):
if (xxMethod() == NOERROR)
{
// Handle success here.
}
else
{
// Handle failure here.
}
Relaterade ämnen