На этом шаге мы приведем общие сведения о кодах HRESULT.
Для обработки ошибок приложения и компоненты СОМ применяют ранее рассмотренные методы, однако для них известен более предпочтительный способ передачи информации о сбое - посредством кодов НRESULT.
Начиная с этого шага мы расскажем о кодах HRESULT и об особенностях обработки ошибок СОМ-компонентов. Не забывайте, что различия между удачной и ошибочной работой СОМ-компонента не всегда похожи на различия между белым и черным. СОМ допускает, что успех и неудача могут быть частичными.
Мы также расскажем, как СОМ-компонент уведомляет клиентское приложение об ошибке событием Error - одним из стандартных событий, определенных в СОМ.
В модели СОМ методы интерфейсов возвращают коды HRESULT, сообщающие об успешном или ошибочном завершении. Несмотря на префикс Н, код HRESULT - не описатель, а простое 32-разрядное число, отражающее ошибку или удачное завершение функции.
В СОМ определено множество кодов HRESULT, например S_OK для успешного завершения, S_FALSE для ошибочного, а также предусмотрены различные коды ошибок, например Е_INVALIDARG или E_NOTIMPL. Префикс Е обозначает коды ошибок, S - коды состояния (SCODE). В 32-разрадных ОС Windows HRESULT и SCODE не различаются.
В СОМ разрешается определять собственные значения HRESULT, что описано далее. Однако во избежание путаницы старайтесь использовать предопределенные значения. Например, стандартный код E_OUTOFMEMORY однозначно сообщает об этой частой ошибке. Список значений HRESULT с их описанием Вы найдете в файле WinError.h под заголовком "OLE Error Codes".
На следующем шаге мы рассмотрим структуру кода HRESULT.