C #: номер строки на трассировке стека указывает на строку с символом}

Есть предложения по решению этой проблемы? Я все время придумываю "отсутствующие" номера строк, когда обращаюсь к машине Google, и это не проблема, с которой мы сталкиваемся. У нас есть номер строки, но он не указывает ни на что, кроме закрывающей скобки.

Может быть, это тайм-аут? Кажется странным, что он постоянно отказывается от метода в самом конце, и от того же метода не меньше. Тайм-ауты не обязательно бывают частыми, и приложение (выигрышные формы, вызывающие веб-службу asmx) время от времени выдает тайм-аут в других местах.

Изменить: трассировка кода и стека.

public DataSet GetData(...)
{
   // About 18 try/catch blocks loading tables in dataset, all similar to below
   try
   {
      // Create Table Adapter
      // Fill Table
   }
   catch (Exception ex)
   {
      LogError(ex, System.Reflection.MethodBase.GetCurrentMethod(), null);
      throw ex;
   }
}  //Line 479

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает. at MonitoringDataService.AddAllData (DataSet Data, DateTime LastSync, String PrevAreas, String NewAreas, DateTime PrevStartDate, DateTime PrevEndDate, DateTime NewStartDate, DateTime NewEndDate, Int32 CurrentUser, логическая строка IsInGroup9: строка MonitoringData

Стоит отметить, что это внутреннее исключение.


person bdwakefield    schedule 05.04.2011    source источник
comment
Вы забыли опубликовать код и трассировку стека. Мы не можем прочитать это отсюда.   -  person Cody Gray    schedule 05.04.2011
comment
Пытался не избавляться от лишнего. Код добавлен.   -  person bdwakefield    schedule 05.04.2011
comment
Да, настоящая проблема в том, что у вас есть все эти блоки try / catch. Для этого нет веской причины. Вторая проблема заключается в том, что вы используете throw ex вместо throw. Это уже обсуждалось здесь несколько раз. Например, см. здесь. Лучший способ решить проблему - удалить все блоки try / catch и только перехватить те ошибки, которые вы обрабатываете явным образом. Есть лучшие способы регистрировать исключения; вы не должны делать все это встроенным.   -  person Cody Gray    schedule 05.04.2011
comment
+1 за помощь с излишней снисходительностью.   -  person bdwakefield    schedule 05.04.2011
comment
Извините, я не имел в виду снисходительность. Я полагаю, что отсылка вас к другим вопросам для обсуждения throw и throw ex может показаться снисходительной, но просто там уже была предоставлена ​​хорошая информация. Я не хочу дублировать это здесь, и я не смог бы сделать такую ​​же работу, как другие, которые уже опубликовали.   -  person Cody Gray    schedule 05.04.2011
comment
Наверное, было не так плохо, как это читалось в моей голове, по крайней мере, уже несколько раз; Двигаясь дальше, я полностью за то, чтобы не дублировать обсуждение, так что это нормально. Однако я был бы больше заинтересован в лучших методах ведения журнала. Насколько я понимаю, это довольно самодостаточная вещь, и она сохраняет всю эту информацию в базе данных ... неожиданный сюрприз, что таблица достигла 5 миллионов записей за несколько недель и в основном все залила водой.   -  person bdwakefield    schedule 05.04.2011


Ответы (2)


Вероятные причины:

  • Выполняемый код отличается от источника, из которого вы выполняете отладку. Это наиболее вероятная причина.
  • Строка может быть строкой после throw new exception(...)
person Aliostad    schedule 05.04.2011
comment
Мы недавно переиздали веб-службу, поэтому вариант 1 маловероятен. Однако разработчик добавил throw ex после регистрации исключения. Я бы предположил, учитывая, что это коллекция из 18+ блоков try / catch ... найти настоящую основную причину будет практически невозможно. - person bdwakefield; 05.04.2011
comment
Не для того, чтобы проповедовать об избежании try/catch, но я определенно надеюсь, что они не встроены друг в друга. - person Grant Thomas; 05.04.2011
comment
Нет, к счастью, не встроен. Даже я бы заплакал от этого. Я не без ума от того, как это было написано, но это то, что есть, и мне нужно разобраться с этим сейчас. - person bdwakefield; 05.04.2011
comment
У меня наблюдаются аналогичные симптомы при попытке отладить файл журнала от клиента, в котором есть трассировка стека. Исключением является исключение NullReferenceException. Три верхних элемента в трассировке стека - это код моего приложения, а все номера строк указывают на закрывающую скобку в конце функции (я знаю, что у меня есть правая копия источника). Нигде в этих функциях нет операторов catch или throw. У кого-нибудь еще есть подсказки? - person Andy; 13.04.2016

Скорее всего, ошибка не в конечной скобке, а в строке перед ней.

person FreeAsInBeer    schedule 05.04.2011