Обработка исключений c # не ведет себя так, как я ожидаю - почему? - PullRequest
4 голосов
/ 08 декабря 2011

У меня есть следующий код C #:

try
{
    response = this.writeDataToChannel(writeRequest);
    if (response.Failures != null)
    {
        Console.WriteLine(response.Failures.First().cause);
    }
}
catch (TimeoutException te)
{
     Console.Error.WriteLine(te.Message);
}

Когда я запускаю этот код в выпуске и отправляю много данных в службу, VS2010 останавливается на строке «writeDataToChannel» с TimeoutException. Не должен ли мой блок catch перехватить исключение и просто распечатать его, когда истечет время ожидания?

Код "writeDataToChannel" был сгенерирован из WSDL, записи всегда работают, пока я не отправляю тонны данных в веб-сервис, поэтому я не думаю, что с моим запросом есть проблема.

Это не проблема пространства имен, в обоих случаях это исключение System.TimeoutException.

Ответы [ 4 ]

7 голосов
/ 08 декабря 2011

Звучит так, будто у вас Visual Studio настроен на остановку из-за возникшего исключения. Перейдите к пункту меню Debug->Exceptions и посмотрите, как настроены исключения CLR. Чтобы получить поведение, которое вы описываете, вы не хотите останавливаться на пойманных или необработанных исключениях.

Либо не запускайте его под отладчиком.

5 голосов
/ 08 декабря 2011

Вы, вероятно, должны указать VS не прерывать каждое выброшенное исключение в диалоге исключений (ctrl + alt + e и снять флажок с исключений CLR)

2 голосов
/ 08 декабря 2011

Как уже упоминалось, это происходит, когда вы отлаживаете проект (нажимая клавишу F5 или нажимая зеленую кнопку треугольника «>»).

Чтобы запустить без отладки, введите CTRL + F5 или нажмитепункт меню «Пуск без отладки» или кнопка.

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

0 голосов
/ 08 декабря 2011

Вам нужно будет бросить, чтобы поймать что-то в попытке / поймать

     throw 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...