Блок Try / Catch не перехватывает исключение - PullRequest
0 голосов
/ 27 октября 2009

У меня есть оператор внутри блока try / catch, но исключение не происходит Кто-нибудь может объяснить?

Сведения об исключении: System.NullReferenceException: объект ссылка не установлена ​​на экземпляр объект.

Ошибка источника:

Line 139:                try
Line 140:                {
Line 141:                    return (int)Session["SelectedLeadID"];
Line 142:                }
Line 143:                catch (Exception ex)

Обновление Это приложение ASP.NET. В блоке catch выдается новое исключение. Вы видите код, который отображается на странице ошибок ASP.NET.

Ответы [ 5 ]

6 голосов
/ 27 октября 2009

Этот блок catch должен перехватить исключение, но убедитесь, что там нет повторного выброса.

Еще один небольшой комментарий: VS несколько раз меня обманывал, потому что он работает с такими исключениями во время работы в режиме отладки. Попробуйте просто нажать «продолжить» или «F5» и посмотреть, не работает ли ваше приложение в любом случае:)

5 голосов
/ 27 октября 2009

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

Другие возможности:

  • у вас есть хитрый код внутри обработчика исключений, который сам вызывает исключение
  • у вас есть хитрый Dispose(), которому звонят (using и т. Д.)
  • вы находитесь в .NET 1.1, и объект, который выдается (в коде не показан), это не Exception, а какой-то другой объект
2 голосов
/ 27 октября 2009

Если это исключение только отладчика для исключения, и вы используете VS2005 или выше, вы можете проверить в Отладка-> Исключения ... , если какой-либо из Common-Language-Runtime- Исключения активируются. Если это так, то отладчик всегда будет сначала перехватывать исключения, но вы можете продолжить.

Чтобы вернуться к нормальному выполнению, просто снимите соответствующие исключения из списка.

0 голосов
/ 22 января 2018

Используйте «System.Exception» вместо Exception.

catch (System.Exception ex)

У меня была точно такая же проблема, вызванная "использованием Java.Lang;"

0 голосов
/ 27 октября 2009

Код выглядит ужасно безобразным ИМО. Поскольку в блоке catch () что-то есть, это означает, что у вас будет еще один оператор return ..., для которого AFAIK у вас всегда должен быть один оператор возврата в конце каждой функции, чтобы упростить следующий код.

т.е. может быть, ваш код должен выглядеть как

public int Function()
{
  int leadID = 0;
  try
  {
    int leadID = (int)Session["SelectedLeadID"];
  }
  catch (Exception ex)
  {
    ...
  }
  return leadID
}

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

...