Предотвратите разрыв Visual Studio при создании исключений - PullRequest
6 голосов
/ 12 апреля 2011

Я тестирую перехват исключений, поэтому мне не нужно, чтобы Visual Studio разбивался на такие мысли, как thrown new NullReferenceException("myVar").

У меня есть следующее в Debug => Exceptions

enter image description here

однако, VS разбивает на исключения. Что мне делать?

PS.

для необработанного исключения приложения, я "ловлю" их, используя Application.UnhandledException, как показано ниже:

''' <summary>Occurs when the application encounters an unhandled exception.</summary> '
Private Sub Application_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
  Dim message As String = String.Format("An application UnhandledException were thrown.{1}The application will now terminate.{1}'{0}'{1}{1}StackTrace:{1}{2}", e.Exception.Message, Environment.NewLine, e.Exception.StackTrace)
  MessageBox.Show(message)
End Sub

Ответы [ 3 ]

6 голосов
/ 05 августа 2011

У меня была такая же проблема, когда я начал использовать VS2010.У меня есть модульные тесты, которые ожидают исключения, и я выкидываю исключения из своих функций.Эти исключения должны обрабатываться пользователем моей библиотеки.В диалоговом окне «Отладка-> Исключения» я снял флажок в столбце «Необработанный пользователь» для исключений общего языка времени выполнения, и VS перестал работать с этими исключениями.Кстати, я не вижу второй столбец в диалоге, который вы прикрепили здесь.

2 голосов
/ 12 апреля 2011

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

Параметры, которые вы видите в диалоговом окне «Отладка -> Исключения», позволяют только настроить, будет ли Visual Studio разбивать на все исключения, включая те, которые позже обрабатываются в вашем коде. Их часто называют исключениями «первого шанса».

Кроме того, вы никогда не должны бросать NullReferenceException самостоятельно; это исключение времени выполнения, зарезервированное для среды выполнения. Вместо этого вы должны бросить ArgumentNullException.

0 голосов
/ 18 августа 2017

В Visual Studio 2015 у меня работает следующий метод (аналогичный процесс может работать для VS2010).

Взято из Visual Studio Документация по управлению исключениями с помощью отладчика :

  1. В окне «Настройки исключений» откройте контекстное меню, щелкнув правой кнопкой мыши в окне и выбрав «Показать столбцы». (Если вы отключили Just My Code, вы не увидите эту команду.)
  2. Вы должны увидеть второй столбец с названием Дополнительные действия. В этом столбце отображается «Продолжить», когда пользовательский код не обрабатывается в определенных исключениях, а это означает, что отладчик не прерывается, если это исключение не обрабатывается в пользовательском коде, а обрабатывается во внешнем коде.
  3. Вы можете изменить этот параметр либо для определенного исключения (выберите исключение, щелкните правой кнопкой мыши и выберите / отмените выбор Продолжить, когда не обрабатывается в коде пользователя), либо для всей категории исключений (например, для всех исключений общего времени выполнения ).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...