Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试在异常后重新加载XML_C#_Xml_Try Catch_Linq To Xml - Fatal编程技术网

C# 尝试在异常后重新加载XML

C# 尝试在异常后重新加载XML,c#,xml,try-catch,linq-to-xml,C#,Xml,Try Catch,Linq To Xml,我在一个恒定的循环中访问一个Web服务,但是在几个请求之后,服务器返回一个503错误,我认为这可能是由大量重复的请求引起的。(你同意我的意见吗?) 我想做的是,基于下面的链接问题,创建一个重试函数,尝试加载xml几次,每次尝试都要等待几秒钟 上面的代码可能会返回所描述的异常(503),我想重新适应我链接到本文的问题中定义为答案的扩展方法 如果成功完成,它应该返回请求的XmlDocument结果 这是我的尝试 static XDocument RetryXMLLoadAction(Action

我在一个恒定的循环中访问一个Web服务,但是在几个请求之后,服务器返回一个503错误,我认为这可能是由大量重复的请求引起的。(你同意我的意见吗?)

我想做的是,基于下面的链接问题,创建一个重试函数,尝试加载xml几次,每次尝试都要等待几秒钟

上面的代码可能会返回所描述的异常(503),我想重新适应我链接到本文的问题中定义为答案的扩展方法

如果成功完成,它应该返回请求的XmlDocument结果

这是我的尝试

static XDocument RetryXMLLoadAction(Action action, int numRetries, int retryTimeout)
        {
            if (action == null)
                throw new ArgumentNullException("action"); // slightly safer...

            do
            {
                try { XDocument result = action(); return result; }
                catch
                {
                    if (numRetries <= 0) throw;  // improved to avoid silent failure
                    else Thread.Sleep(retryTimeout);
                }
            } while (numRetries-- > 0);
        }
静态XDocument RetryXMLLoadAction(Action Action,int numRetries,int retryTimeout)
{
if(action==null)
抛出新ArgumentNullException(“操作”);//稍微安全一点。。。
做
{
请尝试{XDocument result=action();返回结果;}
抓住
{
if(numRetries 0);
}

您似乎要求进行代码审查,在这种情况下,不应该这样做吗?可能是的,我不知道stackexchange的codereview。这似乎是最近的。感谢您的提示,无论如何,欢迎您提供任何帮助。一般来说,您可能希望捕获特定的已知异常(例如503)然后让其他人冒泡。例如,如果抛出了404 not found,或者出现了一些安全异常,您可能希望立即抛出这些异常。是的,这很有意义。我会尽量保持简单,看看是否可以满足我的需要。谢谢:)
static XDocument RetryXMLLoadAction(Action action, int numRetries, int retryTimeout)
        {
            if (action == null)
                throw new ArgumentNullException("action"); // slightly safer...

            do
            {
                try { XDocument result = action(); return result; }
                catch
                {
                    if (numRetries <= 0) throw;  // improved to avoid silent failure
                    else Thread.Sleep(retryTimeout);
                }
            } while (numRetries-- > 0);
        }