Обработка исключений в Biztalk, которые не улавливаются формой области видимости

Давайте подумаем об оркестровке. Основные действия выполняются в форме области с двумя связанными формами исключения Catch: 1 для System.Exception и 1 для общего исключения. В этой оркестровке используется «вспомогательная» библиотека классов C #, а область видимости / перехват BizTalk перехватывает исключения, которые генерируются в библиотеке, а также необработанные исключения, возникающие в них.

Проблема, которую я задаюсь вопросом, которую я могу создать, заключается в следующем: предположим, что версия вспомогательной библиотеки публикуется, и внезапно отсутствует метод, который ранее был там, и оркестровка пытается вызвать его. Неизбежно выбрасывается MissingMethodException, что, кажется, происходит, как только достигается форма Scope.

MissingMethodException не перехватывается оркестровкой, поэтому сообщение приостанавливается. Я понимаю, что при правильном тестировании этого никогда не должно произойти, но я просто пытаюсь охватить все основы, если они произойдут (и на самом деле просто из любопытства).

Есть ли способ перехватить эти исключения, или, если кажется, что это происходит на уровне до вызова области видимости?


person Bensonius    schedule 20.08.2013    source источник


Ответы (2)


Я понял. Мне пришлось обернуть всю область видимости, которая содержала формы, которые использовались моими вспомогательными библиотеками также в другой области. Похоже, что .dll (для библиотеки вспомогательных классов) должны были загружаться и оцениваться, как только достигается область видимости.

Если вы посмотрите на прикрепленное изображение, то увидите, что мои вспомогательные библиотеки используются в форме выражения «ValidateWrapper», но оркестровка даже не выполнялась до вызова MissingMethodException (из-за отсутствия метода в библиотеке вспомогательных классов), фигура "GeneralScope" не смогла поймать MissingMethodException, но как только я обернул GeneralScope в другую область видимости, MissingMethodException был пойман этим и мог быть обработан.

Все это произошло потому, что я обновил ресурс вспомогательного класса через консоль администратора BizTalk, поэтому компилятор не смог предупредить об отсутствующем методе ... но, по крайней мере, теперь я знаю, что могу перехватить исключение, если оно повторится.

введите описание изображения здесь

person Bensonius    schedule 21.08.2013

Вы должны знать, что исключения в оркестровке в BizTalk обрабатываются так же, как в .NET: исключения всегда наследуются от базового класса System.Exception.

Скажем, например, у вас есть настраиваемое исключение MissingMethodException (которое наследуется от System.Exception), тогда вы можете либо перехватить MissingMethodException (для получения каких-либо конкретных данных) или System.Exception. Оба будут запускать обработчик исключений System.Exception, если не существует определенного обработчика исключений MissingMethodException.

Для получения дополнительной информации я предлагаю прочитать http://www.codeproject.com/Articles/125470/Exception-Handling-for-C-Beginners

В этом отношении оркестровки BizTalk ничем не отличаются от любых других исключений в .NET.

Надеюсь это поможет.

person Pieter Vandenheede    schedule 20.08.2013
comment
Спасибо за комментарий. Я знаю, как работают исключения и как с ними обращаться. Возможно, я недостаточно ясно изложил это в исходном сообщении, но я обрабатываю большинство исключений, но использую 2 области 1: System.Exception и 2: Общее исключение BizTalk. Проблема в том, что, похоже, область видимости biztalk может предварительно загружать вспомогательную библиотеку и находить отсутствующий метод еще до входа в область, поэтому Catch не улавливает его. - person Bensonius; 21.08.2013