Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Ishodniki.Ru » Online книги » Visual Basic по шагам

Шаг 48 - Обработка ошибок COM DLL клиентом

В прошлом шаге мы с Вами посмотрели как вообще обрабатываются ошибки в VB. Давайте попробуем применить наши знания к COM DLL. Мы возьмем тот же компонент, что и из шага "Шаг 39 - Понимание использования MTS". И изменим главный метод.

Public Function Method() As Boolean

Dim context As ObjectContext

Dim sql As ClassSQL

Dim oracle As ClassORACLE

Set context = GetObjectContext

Set sql = context.CreateInstance("ProjectTransaction.ClassSQL")

Set oracle = context.CreateInstance("ProjectTransaction.ClassORACLE")

sql.Method

oracle.Method

Set sql = Nothing

Set oracle = Nothing

context.SetAbort

Err.Raise 11111, "Com DLL", "Hello Client"

Method = True

End Function

Нужно заново собрать DLL и обновить в Transaction server. У клиента сделаем перехват ошибок:

Private Sub Command1_Click()

On Error GoTo Errors:

Dim a As ClassGeteral

Dim b As Boolean

Set a = New ClassGeteral

b = a.Method

Set a = Nothing

If b = True Then

MsgBox "Ok"

Else: MsgBox "Error"

End If

 Exit Sub

Errors:

 MsgBox "Error detected"

 MsgBox (Str(Err.Number))

 MsgBox (Err.Source)

 MsgBox (Err.Description)

End Sub

Запустим и посмотрим.

gif/48_1.gif (4160 b)

Клиент перехватил ошибку и обработал, что и требовалось. Итак, если произошла ошибка нужно вернуть SetAbort. Только будьте внимательны, если ошибка внутри какого-то компонента, то код этой ошибки нужно передать по цепочке объектов, а клиент должен знать все коды, чтобы что-то сказать пользователю. Вызов SetAbort гарантирует, что дальнейшее обращение к объектам прекратится и ошибка будет отлавливаться. Внимательным нужно быть в плане того, что стандартный код подразумевает, что ошибки отлавливаются в каждом компоненте, и, если она внутри вызова, то может затеряться. Вы узнаете, что транзакция отменена, но почему не узнаете. Вариантов реализации много, может клиенту и не надо знать почему и что произошло, а только сам факт. Есть такая возможность и как сказано в уставе - умело орудуя штыком и прикладом...

 

Предыдущий шаг | Оглавление | Следующий шаг

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру