COMException-spezifischen Fehlercode abfangen

Ich hoffe, jemand kann mir helfen. Ich habe eine bestimmte Ausnahme von COM, die ich abfangen und dann versuchen muss, etwas anderes zu tun. Alle anderen sollten ignoriert werden. Meine Fehlermeldung mit der Ausnahme lautet:

System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel kann nicht auf die Datei 'C: \ test.xls' zugreifen. Es gibt mehrere mögliche Gründe:

Also war mein erster Versuch

try
{
 // something
}
catch (COMException ce)
{
   if (ce.ErrorCode == 0x800A03EC)
   {
      // try something else 
   }
}

Dann lese ich jedoch eine Compiler-Warnung:

Warnung 22 Der Vergleich mit der Integralkonstante ist unbrauchbar. Die Konstante liegt außerhalb des Bereichs des Typs 'int' ..... ExcelReader.cs 629 21

Jetzt weiß ich, dass das 0x800A03EC das HResult ist und ich habe mir gerade MSDN angeschaut und gelesen:

HRESULT ist ein 32-Bit-Wert, der in drei verschiedene Felder unterteilt ist: einen Schweregradcode, einen Einrichtungscode und einen Fehlercode. Der Schweregradcode gibt an, ob der Rückgabewert Informationen, Warnungen oder Fehler darstellt. Der Einrichtungscode identifiziert den Bereich des Systems, der für den Fehler verantwortlich ist.

Meine letzte Frage ist also, wie ich sicherstellen kann, dass ich diese bestimmte Ausnahme einfange. Oder wie bekomme ich den Fehlercode aus dem HResult?

Danke im Voraus.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage