我有一个调用 SOAP 接口(interface)的类,并返回一组数据。但是,如果此请求超时,则会抛出异常。这很好。但是,我希望我的程序再次尝试进行此调用。如果超时,我希望它继续调用此电话,直到成功为止。我怎样才能做到这一点?
例如:
try
{
salesOrdersArray = MagServ.salesOrderList(sessID, filter);
}
catch
{
?? What Goes Here to FORCE the above line of code to rerun until it succeeds.
}
最佳答案
你只需要永远循环:
while (true)
{
try
{
salesOrdersArray = MagServ.salesOrderList(sessID, filter);
break; // Exit the loop. Could return from the method, depending
// on what it does...
}
catch
{
// Log, I suspect...
}
}
请注意,您几乎可以肯定不会实际上永远循环。您几乎肯定应该有最大尝试次数,并且可能只捕获特定 异常。捕获所有异常永远可能会很可怕……想象一下如果salesOrderList
(非常规方法名称,顺便说一句)抛出ArgumentNullException
因为你有一个 bug 而 filter
是空的...你真的想永远占用 100% 的 CPU 吗?
关于c# - 在 C# 中重复一个函数,直到它不再抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920657/