2011-12-08 28 views
4

我有以下的C#代码:异常处理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停止与一个TimeoutException了“writeDataToChannel”行。我的catch块不应该捕获异常,只是在超时发生时才打印它?

“writeDataToChannel”代码是从WSDL生成的,这些写操作一直运行,直到我将大量数据推送到webservice,所以我认为我的请求没有问题。

这不是一个命名空间问题,在这两种情况下它都是一个System.TimeoutException。

+0

您是否在调试该项目? – rsbarro

+3

你正在谈论调试器。调试器中的_course_运行代码的工作方式不同!调试器给你一个机会来看看异常。按F5键,您的catch块将会到达。 –

+0

这是在Web服务的上下文中运行吗? – jrummell

回答

7

这就像你有Visual Studio中设置停在抛出的异常的声音给我。转到菜单项Debug->Exceptions,看看你的CLR例外设置是什么。为了获得所描述的行为,您不希望停止捕获或未捕获的异常。

或者,不要在调试器下运行它。

+0

我对这些设置不了解,您(以及其他回答此答案的人)都是对的。 – Dale

-8

您将需要以扔赶上的东西在你的try/catch

 throw 
+1

这不是事实。 – BZink

+10

你应该删除你的答案,然后再放弃更多的代表! – jrummell

+0

他不抛出异常,底层类或库抛出异常。 –

5

你可能需要告诉VS不要在例外对话框(Ctrl + Alt + E并取消CLR例外)每个抛出的异常打破

2

正如其他人所提到的,当你正在调试的项目(这种情况点击F5,或者点击绿色的三角形按钮“>”)。

要运行而不进行调试,请键入CTRL + F5,或者单击“无调试开始”菜单选项或按钮。

您不一定需要删除停止对其他人提到的异常的选项,但如果它变得令人讨厌,请继续操作。

相关问题