|
||||||||
|
Обработка ошибок, переданных из внешних объектов
Модуль класса может включать обработчик, перехватывающий все ошибки и повторно генерирующий те из них, которые он не сумел обработать. *
Блок Case 440 перехватывает ошибки, возникающие во внешнем (вне Visual Basic) объекте. В этом примере ошибка под обобщенным номером 9999 просто передается следующему обработчику, поскольку в данном варианте централизованного обработчика трудно определить точную причину ошибки. Причиной может быть фатальная ошибка Автоматизации (заставившая компонент завершить свое выполнение) или некорректная обработка объектом перехваченной ошибки. Ошибку 440 нельзя передавать дальше, если только она не относится к числу фатальных. Если бы Вы написали на этот случай строчный обработчик (см. раздел ?Строчная обработка ошибок? ранее в этой главе), то причину ошибки можно было бы определить и устранить. Блок Case Is > vbObjectError and Is < vbObjectError + 65536 * перехватывает ошибки, возникающие в объектах самого приложения или в объекте, содержащем данный обработчик. В документации на созданный Вами объект обязательно опишите возможные коды ошибок и их смысл, с тем чтобы этот блок обработчика мог корректно их обработать. Коды ошибок можно задокументировать как относительные значения (смещения от vbObjectError) или как абсолютные, включающие в себя значение vbObjectError. В последнем случае в блоке Case Else значение vbObjectError следует вычитать из кода ошибки, а не прибавлять. С другой стороны, ошибки объектов можно определить как константы в библиотеке типов конкретного объекта (тогда Вы увидите их в окне просмотра объектов). В таком случае в блоке Case Else используйте именно эти константы, а не коды ошибок. Любую необработанную ошибку следует повторно генерировать под новым номером, как показано в блоке Case Else, а в своей программе Вы можете создать обработчик, ожидающий ошибку с этим номером. Если ошибка связана с открытым классом, включите ее описание в документацию на свою программу. Последний блок Case Else перехватывает и повторно генерирует все ошибки, оставшиеся необработанными. Поскольку в этом случае не известно, входит ли в коды этих ошибок константа vbObjectError, следует просто преобразовать их в код обобщенной ошибки и суммировать его с vbObjectError, сообщив таким образом всем обработчикам, что эта ошибка возникла в объекте, на который ссылалась программа.
Текст пособия подготовлен на основе материалов книги Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл. c Оригинальное издание на английском языке, Microsoft Corporation, 1997 c Русский перевод, Microsoft Corporation, 1997 |