首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebException:挑出TimeoutExceptions

WebException:挑出TimeoutExceptions
EN

Stack Overflow用户
提问于 2014-09-29 08:52:25
回答 2查看 104关注 0票数 1

我有多线程操作,它执行一系列任务。我面临的问题是一个when服务,当压力很大时,它可能返回一个超时

当压力很大时(超时),我希望重试这个函数。

代码语言:javascript
复制
Try
{
   // Do some actions here
} 
catch(WebException ex)
{
   if (// Timeout)
   { //Retry }
   else
   { // return error }
}
catch(Exception ex)
{ //return error }

MSDN中,Webexception可以在以下情况下发生:

  • 以前调用过中止。
  • 请求的超时时间已过期。
  • 处理请求时出错。

问题:在我的异常处理中,如何在不使用消息的情况下分离这三个原因并单独挑出TimeoutExceptions

注意:,我知道我可以增加timeout来解决这个问题。但这并不能平息我的好奇心。

谢谢您抽时间见我

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-29 08:56:11

状态代码之一相比,您可以检查web请求状态属性:

代码语言:javascript
复制
try {

}
catch(WebException ex) {
    if (ex.Status == WebExceptionStatus.Timeout) {
        // Retry logic
    }
    else {
        // return error
    }
}

有关重试逻辑的示例,请参见这个职位。请注意,Timeout并不是触发重试的唯一原因(至少ConnectionFailureConnectionClosed也是如此)。

票数 1
EN

Stack Overflow用户

发布于 2014-09-29 08:57:07

您可以查看异常的状态属性,它将包含异常的正确原因

由于您使用的是一些与时间相关的行为,如果您在代码中使用了一些测试,我建议您查看一下反应性扩展;它允许您配置事件链,使您能够轻松地测试所需的行为。以这个问题为例,我希望某些事件在发生错误时重复频率更高,您可能会对此感兴趣。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26095929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档