Ошибка при отлове в динамически сгенерированной сборке - PullRequest
2 голосов
/ 06 января 2011

У меня проблемы с написанным мною приложением, оно в основном создает динамически генерируемые сборки на основе введенного пользователем кода.
Он компилируется и работает нормально, но по какой-то причине, иногда, когда возникает исключение в этой скомпилированной сборке, происходит сбой основной программы, даже если все полностью покрыто блоками try / catch.

Я добавляю блоки try / catch, чтобы окружить код пользователя в сгенерированной сборке, а также try / catch вокруг вызова сборки в моем приложении:

StringBuilder verificationErrors = new StringBuilder();
argz[0] = "hello!";
argz[1] = verificationErrors;
object loResult = null;
try
{
   loResult = loObject.GetType().InvokeMember("doThis", BindingFlags.InvokeMethod, null, loObject, argz);
}
catch (Exception p)
{
   MessageBox.Show(p.Message);
}

Похоже, что ошибка выходит за рамки моего приложения, поэтому он не знает, как ее перехватить или что-то в этом роде ... какие-нибудь идеи?

Ответы [ 2 ]

0 голосов
/ 06 января 2011

Если вы запустите программу в режиме отладки и прикажете Visual Studio прервать работу при возникновении исключения, вы сможете проверить трассировку стека и определить, какой метод вызывает исключение.

  1. Перейти к Отладка / Исключения ...
  2. Установите флажок перед «Исключения общего времени выполнения» в столбце «Брошенный»
  3. Нажмите "ОК"
  4. Запустить программу в режиме отладки
0 голосов
/ 06 января 2011

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

Я бы обернул код в блоке catch с последующей попыткой ... catch, и если он выдает ошибку, просто скажите «Произошла непредвиденная ошибка» и запишите все, что вы можете об этом.

...