Behandeln unbekannter Fehler
Es ist zulässig, einen Statuscode nur aus der Implementierung einer Schnittstellenmethode zurückzugeben, die als rechtmäßig rückgabefähig anerkannt wurde. Wenn diese Regel nicht beachtet wird, birgt das die Gefahr eines Konflikts zwischen den zurückgegebenen Fehlercodewerten und den von der Anwendung festgelegten Werten. Achten Sie besonders auf dieses potenzielle Problem, wenn Fehlercodes von Funktionen weitergegeben werden, die intern aufgerufen werden.
Anwendungen, die Schnittstellen aufrufen, sollten unbekannten zurückgegebenen Fehlercode (im Gegensatz zu einem Erfolgscode) als Synonym für E_UNEXPECTED behandeln. Diese Vorgehensweise zur Behandlung unbekannter Fehlercodes ist von Clients der COM-definierten Schnittstellen und Funktionen erforderlich. Da die typische Programmierpraxis darin besteht, einige bestimmte Fehlercodes detailliert zu behandeln und den Rest generisch zu behandeln, ist diese Anforderung zur Behandlung unerwarteter oder unbekannter Fehlercodes einfach zu erfüllen.
Es ist wichtig, alle möglichen Fehler beim Aufrufen einer Schnittstellenmethode zu behandeln. Das Versäumnis, dies zu tun, kann dazu führen, dass Ihre Anwendung abstürzt, Daten beschädigt werden oder anfällig für Sicherheitslücken auszunutzen ist. Das folgende Codebeispiel zeigt die empfohlene Methode zur Behandlung unbekannter Fehler:
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;
}
Die folgende Fehlerüberprüfung wird häufig mit den Routinen verwendet, die nichts Besonderes zurückgeben (außer S_OK oder einem unerwarteten Fehler):
if (xxMethod() == NOERROR)
{
// Handle success here.
}
else
{
// Handle failure here.
}
Verwandte Themen