La capture de COMException Code d'Erreur spécifique

J'espère que quelqu'un pourra m'aider. J'ai une Exception spécifique de COM que j'ai besoin d'attraper puis à tenter de faire quelque chose d'autre, tous les autres devraient être ignorés. Mon message d'erreur de l'Exception est la suivante:

Système.Moment de l'exécution.InteropServices.COMException
(0x800A03EC): Microsoft Office Excel
ne peut pas accéder au fichier 'C:\test.xls'.
Il y a plusieurs raisons possibles:

Donc ma première tentative a été

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

Cependant puis j'ai lu un avertissement du compilateur:

Avertissement 22 Comparaison à integral
constante, c'est inutile; la constante est
en dehors de la plage de type
"int".....ExcelReader.cs 629 21

Maintenant, je sais que le 0x800A03EC est l'
HResult et j'ai juste regardé sur MSDN
et lire:

HRESULT est une valeur de 32 bits,
divisé en trois domaines différents: un
la gravité de code, un code de fonction, et un
code d'erreur. Le code de sévérité
indique si la valeur de retour
représente de l'information, d'avertissement ou d'
erreur. Le code de fonction identifie
la zone du système responsable de
l'erreur.

Donc ma question ultime est de savoir comment puis-je m'assurer que je piège exception particulière? Ou comment puis-je obtenir le code d'erreur de la HResult?

Merci d'avance.

  • Juste pour ajouter une note. Ce n'est pas très facile à reproduire cette exception, car j'ai besoin d'une configuration spécifique à faire, que je suis en train vers mais j'ai pensé pose la question ici pourrait être plus rapide 🙂
InformationsquelleAutor Ian | 2009-09-15