Определите два типа ComException с одним и тем же HResult

При взаимодействии с Outlook мне нужно обработать несколько исключений, все они COMException с одним и тем же HResult, единственная разница заключается в их свойстве Message.

Я должен отличить их друг от друга, исследуя свойство Message, но такой код вызывает проблемы.

if (ex.Message.Contains("is bigger than the server allows")) //??? 

Итак, как правильно обрабатывать исключение при проверке типа исключения, когда свойство HResult не работает?

введите здесь описание изображения

введите здесь описание изображения


person kennyzx    schedule 06.06.2017    source источник
comment
Это знаменитый E_FAIL. Это досадные исключения. Если вы справитесь с ними, вы должны предпринять корректирующие действия, чтобы они не могли быть подняты снова. Итак, грубо говоря, диалоговое окно требует, чтобы вы запустили код автоматизации пользовательского интерфейса, который находит диалоговое окно и закрывает его. Даже если он, безусловно, существует по уважительной причине и пользователь с ним взаимодействует. И ошибка прикрепления требует, чтобы вы запустили установщик для лучшей, более крупной версии сервера. Хотя это, безусловно, именно то, что администратор сервера не хочет, чтобы вы делали. Вы не можете справиться с этими истинами.   -  person Hans Passant    schedule 06.06.2017


Ответы (1)


проверка сообщения была тем, что мы сделали в аналогичном проекте. Это некрасиво, но работает. Чтобы получить больше комфорта, вы можете поискать некоторые спецификации Outlook, чтобы получить полный список сообщений об ошибках. Что именно вы имеете в виду, говоря «напрашиваться на неприятности»? код ненадежный?

person Bing Wang    schedule 06.06.2017
comment
Самая большая проблема в том, что сообщения об ошибках локализуются на устройстве клиента. В этом случае я ожидаю, что коды ошибок будут четко определенными целыми числами. - person kennyzx; 06.06.2017