Behandeln unbekannter Fehler

Es ist legal, einen status Code nur aus der Implementierung einer Schnittstellenmethode zurückzugeben, die als rechtlich rückgabefähig sanktioniert ist. Wenn diese Regel nicht beachtet wird, besteht die Möglichkeit eines Konflikts zwischen zurückgegebenen Fehlercodewerten und den von der Anwendung sanktionierten Werten. Achten Sie besonders auf dieses potenzielle Problem, wenn Fehlercodes von Intern aufgerufenen Funktionen weitergegeben werden.

Anwendungen, die Schnittstellen aufrufen, sollten jeden unbekannten zurückgegebenen Fehlercode (im Gegensatz zu einem Erfolgscode) als Synonym für E_UNEXPECTED behandeln. Diese Praxis der Behandlung unbekannter Fehlercodes ist für Clients der COM-definierten Schnittstellen und Funktionen erforderlich. Da die typische Programmierpraxis darin besteht, einige bestimmte Fehlercodes im Detail zu behandeln und den Rest generisch zu behandeln, kann diese Anforderung zur Behandlung unerwarteter oder unbekannter Fehlercodes problemlos erfüllt werden.

Es ist wichtig, alle möglichen Fehler beim Aufrufen einer Schnittstellenmethode zu behandeln. Andernfalls kann Ihre Anwendung abstürzen, Daten beschädigen oder anfällig für Sicherheitsbeute werden. 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 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.
} 

Fehlerbehandlung in COM