异常处理c#并不像我期望的那样 - 为什么?

时间:2011-12-08 17:45:14

标签: c# exception-handling

我有以下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生成的,写入总是有效,直到我将大量数据推送到Web服务,所以我认为我的请求没有问题。

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

4 个答案:

答案 0 :(得分:7)

听起来我觉得Visual Studio设置为停止抛出异常。转到菜单项Debug->Exceptions,查看您的CLR例外设置。为了获得您所描述的行为,您不希望停止捕获或未捕获的异常。

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

答案 1 :(得分:5)

您可能需要告诉VS不要在异常对话框中中断每个抛出的异常(ctrl + alt + e并取消选中CLR异常)

答案 2 :(得分:2)

正如其他人提到的那样,当您调试项目时会发生这种情况(通过点击F5,或点击绿色三角形按钮“>”)。

要在不进行调试的情况下运行,请键入CTRL + F5,或单击“启动而不调试”菜单选项或按钮。

你不一定需要像其他人提到的那样删除停止异常的选项,但如果它变得烦人的话,请继续这样做。

答案 3 :(得分:-8)

你需要投掷才能捕捉到try / catch中的内容

     throw