Перейти к основному содержимому

Обработка ошибок SOAP-сервиса

Если в результате выполнения операции в обработчике SOAP-сервиса будет выброшено исключение, то будет возвращена SOAP-ошибка. Вы можете поймать и обработать эту ошибку в клиенте SOAP-сервиса, например, получить детали ошибки.

Предположим, в SOAP-сервисе определена ошибка ОшибкаОстатковНаСкладе, с атрибутами ДобавленоВКорзину и ОстатокНаСкладе. Данная ошибка выбрасывается, когда покупатель пытается добавить в корзину большее количество товара, чем есть сейчас в наличии. В проекте создан клиент SOAP-сервиса с названием КлиентСервисаМагазина. Тогда получить доступ к типу ошибки, определенной в SOAP-сервисе, из встроенного языка можно следующим образом:

КлиентСервисаМагазина.ОшибкаОстатковНаСкладе

Чтобы получить доступ к деталям ошибки, следует обратиться к свойству Детали, а затем к каждому свойству ошибки по отдельности:

знч ДеталиОшибки = КлиентСервисаМагазина.ОшибкаОстатковНаСкладе.Детали

знч Добавлено = ДеталиОшибки.ДобавленоВКорзину
знч Остаток = ДеталиОшибки.ОстатокНаСкладе

Код обработки ошибки в таком случае может выглядеть следующим образом:

знч Клиент = новый КлиентСервисаМагазина()
знч Товар = новый КлиентСервисаМагазина.Товар(Наименование="МойТовар")

попытка
знч ОтветСервиса = Клиент.addToCart(Товар=Товар, Количество=11)
знч Корзина = ОтветСервиса.Результат
// Перевести пользователя в корзину для дальнейшей оплаты
поймать Исключение: КлиентСервисаМагазина.ОшибкаОстатковНаСкладе
знч Добавлено = Исключение.Детали.ДобавленоВКорзину
знч Остаток = Исключение.Детали.ОстатокНаСкладе
// Вывести пользователю информацию о деталях ошибки
;