Необработанное исключение в приложении Windows Forms - PullRequest
2 голосов
/ 01 февраля 2012

У меня есть приложение Windows Forms.Загружает сборки с расширением .Plugin.dll с Assembly.LoadFile.Один из этих «плагинов» вызывает другую сборку DLL.Эта DLL в конечном итоге выдает исключение ValidationException.Метод, который генерирует исключение, находится в классе, который наследуется от IDataErrorInfo.Этот класс является классом, который содержится в классе Linq to SQL (.dbml).В «плагине» я вызываю DataContext.SubmitChanges.Это обернуто в блок try / catch.Это заставляет мою бизнес-логику проверять данные перед отправкой в ​​базу данных в переопределении OnValidate.В результате я вижу, что после создания ValidationExeption отладчик останавливается в нижней части метода OnValidate, указывая, что произошло необработанное исключение.Если я продолжу запускать приложение, мой блок catch будет выполнен.Это то, что я хотел в первую очередь, но почему я получаю необработанное исключение, когда оно действительно обрабатывается?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Во-первых, является ли плагин в том же домене приложений?

Во-вторых, похоже, что у вас есть отладчик «Разорвать, когда выбрасывается исключение», а не «Разорвать, когда исключение не обрабатывается пользователем».

В VS.NET перейдите в Debug -> Exceptions ...

Разверните узел "Common Language Runtime Exceptions" и посмотрите, отмечены ли какие-либо из них.

0 голосов
/ 01 февраля 2012

Я на 99% уверен, что ваше "настоящее" исключение, вызвавшее это, действительно необработано - это то, что отладчик говорит вам в первую очередь, и он, как правило, прав.приложение в VS после этого, на самом деле это не то, что произойдет, когда вы запустите свой exe из отладчика.Фактически, отладчик уведомляет вас сначала о необработанном исключении, а затем продолжает некоторую ожидающую логику, если таковая имеется (вот почему вы видите ошибку ValidationException).Но необработанное исключение все еще там.Я точно не знаю деталей и причин такого поведения, но я заметил это много раз.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...