Я надеюсь, что кто-то может мне помочь. У меня есть конкретное исключение из COM, которое мне нужно поймать, а затем попытаться сделать что-то еще, все остальные должны быть проигнорированы. Мое сообщение об ошибке с Исключением:
System.Runtime.InteropServices.COMException(0x800A03EC): Microsoft Office Excel не может получить доступ к файлу "C:\test.xls". Существует несколько возможных причин:
Итак, моя первоначальная попытка была
try
{
// something
}
catch (COMException ce)
{
if (ce.ErrorCode == 0x800A03EC)
{
// try something else
}
}
Однако затем я прочитал предупреждение компилятора:
Предупреждение 22 Сравнение с интегралом константа бесполезна; константа вне диапазона типа 'int'..... ExcelReader.cs 629 21
Теперь я знаю, что 0x800A03EC - это HResult и я только что посмотрел MSDN и читайте:
HRESULT - это 32-битное значение, разделен на три разных поля: код серьезности, код объекта и код ошибки. Код серьезности указывает, будет ли возвращаемое значение представляет информацию, предупреждение или ошибка. Код объекта идентифицирует область системы, отвечающей за ошибка.
Итак, мой последний вопрос, как я могу обеспечить, чтобы я улавливал это конкретное исключение? Или как получить код ошибки из HResult?
Спасибо заранее.