Я разрабатываю плагин для большего приложения, и я столкнулся с странной проблемой со следующим кодом. При запуске в режиме Release или Debug без контрольных точек все в порядке. Но когда я поставил точку останова где-то рядом с фрагментом ниже, я получаю сообщение об ошибке. Похоже, что отладчик предварительно оценивает код внутри блоков if, вызывая ошибку, несмотря на то, что этот код никогда не был достигнут.Visual Studio 2008 отладчик - функция оценки weirdness
Обратите внимание, что индексатор внутренне проверяет неправильные индексы и запускает путь к основному приложению. Основное приложение обрабатывает это событие ошибки, показывая диалоговое окно и закрывая себя. Я не могу изменить основное приложение, и я не могу изменить индексатор (хотя я думаю, что для исключения может возникнуть исключение, а не для запуска события).
int a = GetA(); // returns 0
if (a == 1)
{
_manager[a - 1][ColumnName.Name] = "X"; //Manager has an indexer returning a DataRow.
}
if (a == 2)
{
_manager[a - 1][ColumnName.Name] = "Y";
}
Когда я отключил «Включить оценку имущества и другие вызовы неявной функции» в Tools-> Options-> Отладка это работало отлично. Есть ли у вас идеи, как обходиться? Мне не нужны эти сообщения об ошибках, но я также не хочу потерять удобство оценки отладчика.
[EDIT] Я переписал описание.
[UPDATE] Я временно изменил код внутри индексатора, чтобы выбросить исключение, связанное с делегированием события на верхний уровень обработки ошибок, и это помогло. VS отладчик поглотили исключение, так что все побочные эффекты остановки (не окно сообщений не отображалось слой обработки ошибок)
Так что вопрос:
Есть третий вариант рядом:
1) Постоянно меняется от случая будучи выскочил вверх к верхнему слою, чтобы исключение
2) Снимите флажок «Включить оценку свойств и другие неявные вызовы функции»
Можете ли вы объяснить, что вы подразумеваете под «ошибкой»? Появляется ли диалоговое окно, выходят из отладчика и т. Д. – JaredPar
«ошибка - это диалоговое окно» - это не сообщение об ошибке, которое я когда-либо видел. Документируйте свой вопрос лучше. –