我有以下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。
答案 0 :(得分:7)
听起来我觉得Visual Studio设置为停止抛出异常。转到菜单项Debug->Exceptions
,查看您的CLR例外设置。为了获得您所描述的行为,您不希望停止捕获或未捕获的异常。
或者,不要在调试器下运行它。
答案 1 :(得分:5)
您可能需要告诉VS不要在异常对话框中中断每个抛出的异常(ctrl + alt + e并取消选中CLR异常)
答案 2 :(得分:2)
正如其他人提到的那样,当您调试项目时会发生这种情况(通过点击F5,或点击绿色三角形按钮“>”)。
要在不进行调试的情况下运行,请键入CTRL + F5,或单击“启动而不调试”菜单选项或按钮。
你不一定需要像其他人提到的那样删除停止异常的选项,但如果它变得烦人的话,请继续这样做。
答案 3 :(得分:-8)
你需要投掷才能捕捉到try / catch中的内容
throw