Как я могу прервать необработанное исключение в ASP.NET?

#asp.net #visual-studio #debugging

Вопрос:

При отладке приложения в Visual Studio существует 2 варианта взлома исключений. Прерывается, как только возникает исключение, и прерывается только тогда, когда исключение не поймано. Это прекрасно работает при разработке настольных приложений. Однако при разработке ASP.NET приложения, все исключения в конечном итоге перехватываются кодом в IIS. Можно ли отключить это поведение, чтобы отладчик ломался, когда мой ASP.Код сетевого приложения не может поймать исключение?


Редактировать:

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


Редактировать:

Похоже, в Visual Studio 2008 это не проблема. В Visual Studio 2003 все исключения обрабатывались как обработанные пользователем, поскольку ASP.NET среда выполнения перехватила все исключения, чтобы не сбить процесс веб-сервера. Похоже, что в Visual Studio 2008 этот тип перехвата исключений не учитывается при проверке необработанных пользователем исключений.

Комментарии:

1. Кибби — я добавил случай для вашего редактирования.

Ответ №1:

В разделе Отладка->Исключения проверьте столбец «Брошенные» исключений общеязыковой среды выполнения (как минимум). Проверьте «Брошено» на наличие других исключений, которые вас интересуют.

Теперь, если отладчик подключен (активная отладка или «Присоединение к процессу»), ваш ASP.NET приложение сломается при исключении CLR (или любом другом выбранном вами исключении).

[ПРАВИТЬ]

Если вы хотите нарушать только необработанные исключения, в разделе Отладка->Исключения снимите флажок «Выбрасывается» для всех типов исключений и убедитесь, что для интересующих вас исключений установлен флажок «Необработанный пользователем».

Интерфейс исключений

Затем, если отладчик подключен, ваш ASP.NET приложение будет прерываться при каждом необработанном пользователем исключении, которое вы выбрали, независимо от того, что среда выполнения в конечном итоге перехватит исключение. Образец:

Сбой отладчика при необработанном пользователем исключении

Комментарии:

1. 1 за действительно полезный ответ! Прошло много времени с тех пор, как вы опубликовали его, но он продолжает помогать, эм (: Спасибо!

2. Стоит отметить, что для появления столбца «Без обработки пользователем» вам необходимо включить «Только мой код» в разделе Параметры > Отладка >> Общие сведения.

3. В Visual Studio 2005 пункт меню Исключения не отображается в разделе Отладка. Вы можете настроить свое меню так, чтобы оно было видимым, или нажать CTRL ALT E, чтобы увидеть это меню