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