COMException Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Исключение, которое возникает при возврате нераспознанного HRESULT из вызова метода COM.
public ref class COMException : Exception
public ref class COMException : System::Runtime::InteropServices::ExternalException
public class COMException : Exception
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
public class COMException : System.Runtime.InteropServices.ExternalException
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class COMException : System.Runtime.InteropServices.ExternalException
type COMException = class
inherit Exception
type COMException = class
inherit ExternalException
[<System.Serializable>]
type COMException = class
inherit ExternalException
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type COMException = class
inherit ExternalException
Public Class COMException
Inherits Exception
Public Class COMException
Inherits ExternalException
- Наследование
- Наследование
- Производный
- Атрибуты
Комментарии
Класс COMException представляет собой исключение, которое возникает при возврате нераспознанного HRESULT из вызова метода COM.
Общая среда выполнения (CLR) преобразует хорошо известные HRESULT в исключения .NET, позволяя объектам COM возвращать значимую информацию об ошибках управляемым клиентам. Сопоставление HRESULT-исключений также работает в обратном направлении, возвращая определенные значения HRESULT для неуправляемых клиентов. Дополнительные сведения о сопоставлении см. в статье "Сопоставление HRESULTs и исключений".
Когда среда выполнения сталкивается с незнакомым HRESULT (HRESULT, который не имеет определенного соответствующего исключения COMException), создаётся экземпляр этого класса. Это универсальное исключение предоставляет те же члены, что и любое исключение, и наследует общедоступное ErrorCode свойство, содержащее HRESULT, возвращаемое вызывающей стороной. Если сообщение об ошибке доступно для среды выполнения (полученное из интерфейса IErrorInfo или Err объекта в Visual Basic или в некоторых случаях из операционной системы), сообщение возвращается вызывающей системе. Однако если разработчик COM-компонента не включает сообщение об ошибке, среда выполнения возвращает восемь цифр HRESULT вместо строки сообщения. Наличие HRESULT позволяет вызывающей стороне определить причину общего исключения.
Обработка исключения COMException
Ниже приведены некоторые рекомендации по устранению неисправностей с COMException исключениями.
Проверьте свойство ErrorCode. Когда среда выполнения сталкивается с незнакомым HRESULT и вызывает исключение COMException, свойство ErrorCode включает либо сообщение об ошибке, либо, если сообщение об ошибке недоступно, восьмизначное значение HRESULT. Сообщение об ошибке или значение HRESULT поможет определить причину исключения.
Список значений HRESULT см. в разделе "Общие значения HRESULT".
При передаче к методам объектов Microsoft Office аргументов с поздней привязкой может возникнуть исключение, если эти объекты являются COM-объектами. Позднее связывание предполагает, что такие вызовы метода включают ByRef параметр и что передаваемое свойство имеет set аксессор. Если свойство отсутствует или неверно, .NET генерирует MissingMethodException исключение (с CORE_E_MISSINGMETHOD HRESULT). Чтобы обойти это поведение, используйте объекты с ранними привязками или передайте переменную вместо свойства объекта.
COM используется для обмена данными между Visual Studio и процессом размещения. Так как он используется перед выполнением кода, вызов CoInitializeSecurity приводит к возникновению этого исключения. В некоторых случаях запуск Visual Studio от имени администратора может устранить проблему. Вы также можете отключить процесс размещения.
Создание исключения COMException
Несмотря на то что можно использовать класс COMException для возврата конкретных значений HRESULT неуправляемым клиентам, лучше выбрасывать конкретное исключение .NET, чем использовать общее исключение. Учитывайте, что управляемые и неуправляемые клиенты могут использовать ваш объект .NET, и вызов HRESULT управляемому клиенту менее понятен, чем выброс исключения.
Конструкторы
| Имя | Описание |
|---|---|
| COMException() |
Инициализирует новый экземпляр COMException класса со значениями по умолчанию. |
| COMException(SerializationInfo, StreamingContext) |
Устаревшие.
Инициализирует новый экземпляр COMException класса из данных сериализации. |
| COMException(String, Exception) |
Инициализирует новый экземпляр COMException класса с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое является причиной этого исключения. |
| COMException(String, Int32) |
Инициализирует новый экземпляр класса COMException с указанным сообщением и кодом ошибки. |
| COMException(String) |
Инициализирует новый экземпляр COMException класса с указанным сообщением. |
Свойства
| Имя | Описание |
|---|---|
| Data |
Возвращает коллекцию пар "ключ-значение", которые предоставляют дополнительные пользовательские сведения об исключении. (Унаследовано от Exception) |
| ErrorCode |
Возвращает ошибку |
| HelpLink |
Возвращает или задает ссылку на файл справки, связанный с этим исключением. (Унаследовано от Exception) |
| HResult |
Возвращает или задает HRESULT, закодированное числовое значение, назначенное определенному исключению. (Унаследовано от Exception) |
| InnerException |
Exception Возвращает экземпляр, вызвавшего текущее исключение. (Унаследовано от Exception) |
| Message |
Возвращает сообщение, описывающее текущее исключение. (Унаследовано от Exception) |
| Source |
Возвращает или задает имя приложения или объекта, вызывающего ошибку. (Унаследовано от Exception) |
| StackTrace |
Возвращает строковое представление непосредственных кадров в стеке вызовов. (Унаследовано от Exception) |
| TargetSite |
Возвращает метод, который вызывает текущее исключение. (Унаследовано от Exception) |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetBaseException() |
При переопределении в производном классе возвращает Exception первопричину одного или нескольких последующих исключений. (Унаследовано от Exception) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Устаревшие.
При переопределении в производном классе задает SerializationInfo с информацией об исключении. (Унаследовано от Exception) |
| GetType() |
Возвращает тип среды выполнения текущего экземпляра. (Унаследовано от Exception) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Преобразует содержимое исключения в строку. |
| ToString() |
Создает и возвращает строковое представление текущего исключения. (Унаследовано от Exception) |
События
| Имя | Описание |
|---|---|
| SerializeObjectState |
Устаревшие.
Происходит при сериализации исключения для создания объекта состояния исключения, содержащего сериализованные данные об исключении. (Унаследовано от Exception) |