Catch не может поймать тип «Microsoft.Office.Interop.Outlook.Exception» - PullRequest
1 голос
/ 25 марта 2011

У меня есть программа на VB.Net, которая получает почту из Outlook, извлекает вложения и вставляет вложения в таблицу с помощью запроса.Я хотел бы поместить запрос / запросы в блок Try / Catch, но не могу этого сделать, поскольку исключения Outlook не могут быть перехвачены, и это выдает мне ошибку, и если я не добавлю очень конкретное исключение, я не смогу его перехватить.Есть ли обходной путь?

Редактировать:

    Try

    Catch ex As Exception

    End Try

Исключение подчеркивается, и когда я нахожу указатель мыши на нем, он говорит: «Catch не может поймать тип» Microsoft.Office.Interop.Outlook.Exception ', поскольку он не входит в' System.Exception 'или в класс, который наследуется от' System.Exception '".Это влияет на весь мой другой код, который я хотел бы поместить в блок Try / Catch.Что делать?

Ответы [ 2 ]

4 голосов
/ 25 марта 2011

ОК, теперь я вижу проблему.

Когда вы пишете Exception, VB читает Microsoft.Office.Interop.Outlook.Exception (возможно, потому что у вас есть оператор Import Microsoft.Office.Interop.Outlook в верхней части вашего файла кода).

Вам нужно явно указать VB, что вы имеете в виду System.Exception:

Try
    ...
Catch ex As System.Exception
    ...
End Try

(Поскольку M.O.I.O.Exception - это не исключение .net, а просто класс COM COM Outlook, который называется Exception, пытаться его Catch не было бы смысла.)

0 голосов
/ 25 марта 2011

Нет такой вещи, как "XXX исключения не могут быть перехвачены".Это, вероятно, имеет тип, который вы не знаете.Вы должны прочитать документацию по используемой вами библиотеке и найти тип исключения.

Редактировать: Чтобы ответить на вопрос: если вы хотите перехватить все исключения, кроме одного, вы должны перехватить все исключения и снова выдатьисключение.

...