2010-06-17 3 views
0

Я столкнулся с некоторым очень странным поведением при отладке в VS 2010 с помощью службы WCF. Вот фрагмент:Ошибка Weird Visual Studio - повторяющееся исключение

public MapFileInfo[] ListFiles(string user, string pass) 
{ 
    return s.ListFiles(user, pass); 
} 

Я хочу, чтобы исключение попало в основное приложение, если аутентификация завершается с ошибкой. Однако то, что на самом деле происходит в режиме отладки, заключается в том, что оно напоминаетs.ListFiles(user, pass). Таким образом, чтобы в дальнейшем проверить мою теорию, что VS делает что-то подозрительное, я просто сделал следующее:

try 
{ 
    return s.ListFiles(user, pass); 
} 
catch (SoapHeaderException e) 
{ 
    throw e; 
} 

глядь, throw e вызывается снова, и снова, и снова, когда я ступаю в (F8), вместо того, чтобы бросать его к вызывающему оператору через стек вызовов.

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

ответ

0

Я думаю, что это желаемое поведение. Если не используется Exception-Handler, VS остановится при вызове метания и дождитесь вашего действия, если вы возобновите отладку, VS попытается снова вызвать ошибочную функцию (в конце концов, вы могли бы что-то изменить, чтобы заставить ее уйти в тем временем).

Итак, похоже, что у вас нет обработчика исключений в вызывающей функции ListFiles.

Если вы хотите использовать общий обработчик ошибок во всем приложении, добавьте обработчики к событиям AppDomain.CurrentDomain.UnhandledException и Application.ThreadException.

+0

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

+0

@ Kezzer: Технически он был брошен. Это был бы тот момент, когда пользователь получает окно «Необработанное исключение», но отладчик, кажется, останавливается прямо там и пытается выполнить неисправный код снова и снова. – Bobby

Смежные вопросы