Mam nadzieję, że ktoś może mi pomóc. Mam wyjątek od COM, który muszę złapać, a następnie spróbować zrobić coś innego, wszystkie inne powinny zostać zignorowane. Mój komunikat błędu z wyjątkiem jest:Catching specyficzny kod błędu COMException
System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Office Excel nie może uzyskać dostępu do pliku 'C: \ Test.xls'. Istnieje kilka możliwych powodów:
Więc moja pierwsza próba została
try
{
// something
}
catch (COMException ce)
{
if (ce.ErrorCode == 0x800A03EC)
{
// try something else
}
}
Jednak potem przeczytałem ostrzeżenie kompilatora:
Warning 22 porównaniu do integralnego stałej jest bezużyteczna; stała jest poza zasięgiem typu 'int' ..... ExcelReader.cs 629 21
Teraz wiem, że 0x800A03EC jest hresult a ja po prostu wyglądał na MSDN i przeczytać:
HRESULT jest 32-bitowa wartość, podzielona na trzy pola: a kod ciężkości, kodu obiektu, a kod błędu. Kod o zagrożeniu wskazuje, czy zwracana wartość reprezentuje błąd informacji, ostrzeżenia lub . Kod obiektu określa obszar systemu odpowiedzialnego za błąd.
Tak więc moim ostatecznym pytaniem jest, w jaki sposób mogę upewnić się, że pułapkę tego wyjątku? Lub w jaki sposób uzyskać kod błędu z HResult?
Z góry dziękuję.
Wystarczy, aby dodać notatkę. Nie jest łatwo odtworzyć ten wyjątek, ponieważ potrzebuję do tego konkretnej konfiguracji, do której zmierzam, ale myślę, że zapytanie tutaj może być szybsze :) – Ian